Hinzufügen eines Abonnements

Das Subscription-Objekt macht Eigenschaften verfügbar, die es Ihnen ermöglichen, Abonnementinformationen festzulegen, wie z. B. die Abonnenten-ID, eine Indexerstellung für die Felder, mit denen die Abonnementdaten definiert werden, und ob das Abonnement für das Generieren von Benachrichtigungen aktiviert ist.

Die Add-Methode dieses Objekts schreibt diese Daten in die Anwendungsdatenbank und gibt den vom System generierten Wert von SubscriptionId für das Abonnement zurück. Der Wert von SubscriptionId wird als ein 64-Bit-Wert für eine ganze Zahl in der Datenbank gespeichert, aber an die Anwendung als Zeichenfolge zurückgegeben.

Hinzufügen eines Basisabonnements

Das folgende Codebeispiel zeigt, wie die Item-Methode der Subscription-Klasse verwendet wird, um den Wert der anwendungsspezifischen Abonnementfelder festzulegen:

// 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();

Zusätzlicher Code für ein geplantes Abonnement

Einige Abonnementklassen unterstützen geplante Abonnements. Für geplante Abonnements müssen Sie zwei zusätzliche Eigenschaften bereitstellen, um die Zeitplanserie und das Startdatum bereitzustellen.

Fügen Sie den folgenden Code dem oben genannten Beispiel vor der Add-Methode hinzu, um ein geplantes Abonnement zu erstellen. Die ScheduleRecurrence-Eigenschaft konfiguriert das Abonnement für die tägliche Verarbeitung. Die ScheduleStart-Eigenschaft konfiguriert das Abonnement für die Verarbeitung zur aktuellen Zeit in der Pazifikzeitzone. Die Liste der unterstützten Zeitzonencodes finden Sie unter Time Zone Codes.

ms171385.note(de-de,SQL.90).gifHinweis:
Die Werte für die Eigenschaften ScheduleStart und ScheduleRecurrence der Subscription-Klasse müssen der Notification Services-Teilmenge der ICalendar-Schnittstellenspezifikation entsprechen. Weitere Informationen finden Sie in den Themen zu den Eigenschaften.
// 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();

Hinzufügen eines bedingungsbasierten Abonnements

Der folgende Code zeigt, wie ein Abonnement für eine Abonnementklasse erstellt wird, die Bedingungsaktionen verwendet. Die Eigenschaften RuleName und Condition stammen aus der Subscription-Klasse. Die Objekte, die zur Definition der Bedingung verwendet werden, wie z. B. die OrCondition-Klasse, stammen aus dem Microsoft.SqlServer.NotificationServices.Rules-Namespace.

Dieses Beispiel zeigt, wie ein Abonnement und eine Bedingung mithilfe von hartcodierten Textwerten erstellt werden. Die Abonnementverwaltungsschnittstelle kann Dropdownlisten und Textfelder bereitstellen, um Benutzern die Auswahl und Eingabe von Werten zu ermöglichen.

// 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();

Die Abonnementbedingung kann ein umfangreiches Objektdiagramm sein, das viele AND-, OR- und NOT-Bedingungen sowie verschiedene Argumenttypen und sogar andere Regeln, über LinkLeafCondition-Objekte, kombiniert.

Beispiel für COM-Interop

Das folgende Codebeispiel zeigt, wie die SetFieldValue-Methode der Subscription-Klasse zum Festlegen des Wertes der anwendungsspezifischen Abonnementfelder verwendet wird:

ms171385.note(de-de,SQL.90).gifHinweis:
Bei bedingungsbasierten Abonnements wird COM-Interop nicht unterstützt.
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."

Siehe auch

Konzepte

Erstellen eines Abonnementobjekts
Aktualisieren eines Abonnements
Löschen eines Abonnements
Abrufen von Abonnementfeldinformationen
Auffüllen einer Abonnentengebietsschema-Liste
Auffüllen einer Zeitzonenliste

Hilfe und Informationen

Informationsquellen für SQL Server 2005