Добавление подписки

Объект Subscription предоставляет свойства, позволяющие настроить данные о подписке, такие как идентификатор подписчика, средство индексации полей, определяющих данные подписки и включение подписки для формирования уведомлений.

Метод Add этого объекта записывает данные в базу данных приложений и возвращает сформированный системой SubscriptionId для подписки. SubscriptionId хранится в базе данных в виде 64-разрядного целого значения, но возвращается приложению в виде строки.

Добавление базовой подписки

В следующем примере кода показано использование метода Item класса Subscription для установки значения полей подписки, относящихся к приложению:

// Create the NSInstance object.
NSInstance testInstance = new NSInstance("Tutorial");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "Weather");

// Create the Subscription object.
Subscription testSubscription =
    new Subscription(testApplication, "WeatherCity");


// Set the properties that describe the subscription record.
testSubscription.Enabled = true;
testSubscription.SubscriberId = "TestUser1";

// Set the subscription data fields (as defined in the ADF),
// using the indexer to set fields by field name.
testSubscription["DeviceName"] = "Work e-mail";
testSubscription["SubscriberLocale"] = "en-US";
testSubscription["City"] = "Shoreline";

// Add the subscription to the database.
testSubscription.Add();

Дополнительный код для запланированной подписки

Некоторые классы подписок поддерживают запланированные подписки. Для запланированных подписок необходимо ввести два дополнительных свойства для предоставления периодичности расписания и даты начала.

Добавьте к вышеприведенному примеру следующий код перед методом Add, чтобы создать запланированную подписку. Свойство ScheduleRecurrence настраивает подписку на ежедневную обработку. Свойство ScheduleStart настраивает подписку на обработку в текущий момент в тихоокеанском часовом поясе. Список поддерживаемых кодов часовых поясов см. в разделе Time Zone Codes.

ms171385.note(ru-ru,SQL.90).gifПримечание.
Значения свойств ScheduleStart и ScheduleRecurrence класса Subscription должны соответствовать подмножеству служб Notification Services спецификации интерфейса ICalendar. Дополнительные сведения см. в разделах, посвященные свойствам.
// Set the recurrence of the subscription.
testSubscription.ScheduleRecurrence = "FREQ=DAILY";

// Set the start date and time of the subscription.
StringBuilder scheduleBuilder = new StringBuilder();
scheduleBuilder.AppendFormat("TZID={0}:{1}{2}{3}T{4}{5}{6}",
    "4",
    DateTime.Now.Year.ToString("D4"),
    DateTime.Now.Month.ToString("D2"),
    DateTime.Now.Day.ToString("D2"),
    DateTime.Now.Hour.ToString("D2"),
    DateTime.Now.Minute.ToString("D2"),
    DateTime.Now.Second.ToString("D2"));
testSubscription.ScheduleStart = scheduleBuilder.ToString();

Добавление подписки на основе условий

В следующем коде показано создание подписки для класса подписки, использующего условные действия. Свойства RuleName и Condition находятся в классе Subscription. Объекты, используемые для определения условия, например класс OrCondition, находятся в пространстве имен Microsoft.SqlServer.NotificationServices.Rules.

В данном примере показано создание подписки и условия с использованием текстовых значений, занесенных в код. Интерфейс управления подписками может предоставлять раскрывающиеся списки и текстовые поля, чтобы пользователи могли выбирать и вводить значения.

// Create the NSInstance object.
NSInstance testInstance =
    new NSInstance("InventoryTrackerInstance");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "InventoryTracker");

// Define subscription properties
Subscription s = new Subscription(testApplication, "InventoryTrackerSubscriptions");
s.SubscriberId = "TestUser1";
s.Enabled = true;
s.RuleName = "InventoryTrackerRule";
s["DeviceName"] = "Work e-mail";
s["SubscriberLocale"] = "en-US";

// Define OrCondition
s.Condition = new OrCondition(
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.GreaterThanOrEqualTo,
        500),
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.LessThanOrEqualTo,
        35)
);

// Add subscription
s.Add();

Условием подписки может быть объект графика, в котором сочетается множество условий AND, OR или NOT, а также различные типы аргументов и даже другие правила, посредством объектов LinkLeafCondition.

Пример взаимодействия COM

В следующем примере кода показано использование метода SetFieldValue класса Subscription для установки значения полей подписки, относящихся к приложению:

ms171385.note(ru-ru,SQL.90).gifПримечание.
Взаимодействие COM не поддерживается для подписок на основе условий.
Dim testInstance, testApplication, testSubscription, subscriptionId

const instanceName = "Tutorial"
const applicationName = "Weather"
const subscriptionClassName = "WeatherCity"

' Create the NSInstance object.
set testInstance = WScript.CreateObject( _ 
    "Microsoft.SqlServer.NotificationServices.NSInstance")
testInstance.Initialize instanceName

' Create the NSApplication object.
set testApplication = WScript.CreateObject( _ 
    "Microsoft.SqlServer.NotificationServices.NSApplication")
testApplication.Initialize (testInstance), applicationName

' Create the Subscription object.
set testSubscription = WScript.CreateObject( _
    "Microsoft.SqlServer.NotificationServices.Subscription")
testSubscription.Initialize (testApplication), subscriptionClassName


' Set the properties that describe the subscription record.
testSubscription.SubscriberId = "TestUser2"
testSubscription.Enabled = true

' Set the subscription data fields 
testSubscription.SetFieldValue "DeviceName", "Work e-mail"
testSubscription.SetFieldValue "SubscriberLocale", "en-US"
testSubscription.SetFieldValue "City", "Anaheim"

' Add the subscription to the database.
subscriptionId = testSubscription.Add

wscript.echo "Subscription added."

См. также

Основные понятия

Создание объекта Subscription
Обновление подписки
Удаление подписки
Получение сведений о поле подписки
Заполнение списка языковых стандартов подписчиков
Заполнение списка часовых поясов

Справка и поддержка

Получение помощи по SQL Server 2005