Lektion 5: Hinzufügen einer Abonnementklasse

In dieser Lektion fügen Sie der Anwendungsdefinitionsdatei (Application Definition File, ADF) eine Abonnementklasse hinzu und aktualisieren dann die Instanz von Notification Services, um die Änderungen auf die Anwendungsdatenbank anzuwenden. Sie können dann die Änderungen überprüfen, die an der Anwendungsdatenbank vorgenommen wurden.

Grundlagen zur Abonnementklasse

Beim Definieren einer Abonnementklasse definieren Sie Speicher für die Abonnementdaten sowie Abfragen, von denen Benachrichtigungen von Ereignis- und Abonnementdaten generiert werden.

Beim Definieren von Speicher für Abonnementdaten definieren Sie Felder für die zu sammelnden Abonnementdaten. Wenn beispielsweise bei den Abonnementdaten eine Stadt von Interesse ist, können Sie ein Abonnementfeld City hinzufügen. Sie stellen dann eine Schnittstelle zur Verfügung, mit der Abonnenten Abonnements erstellen können, in denen sie eine Stadt angeben.

Wenn von Ihrer Anwendung mehrere Abonnementgebietsschemas und mehrere Einrichtungen wie E-Mail und Mobiltelefone unterstützt werden, können Sie auch DeviceName- und SubscriberLocale-Felder zu den Abonnementfeldern hinzufügen. Mithilfe dieser Felder können Sie Benachrichtigungen für mehrere Einrichtungen, Zeitzonen und Sprachen anpassen.

Notification Services fügt der zugrunde liegenden Tabelle für jede Abonnementklasse ein SubscriberId-Feld hinzu.

Neben der Definition von Abonnementfeldern müssen Sie auch eine Benachrichtigungsgenerierungsregel definieren. Bei dieser Regel handelt es sich um eine Transact-SQL-Abfrage, von der Ereignis- und Abonnementdaten auf Übereinstimmung überprüft und die Ergebnisse in die Benachrichtigungsklassenansicht eingefügt werden. Diese Regeln können ereignisausgelöst oder geplant sein. Ereignisausgelöste Regeln werden immer dann ausgeführt, wenn Ereignisse eintreten. Von geplanten Regeln werden einzelne Abonnements gemäß einem Zeitplan ausgewertet, der im Abonnement zur Verfügung gestellt wird.

Mithilfe eine Abonnementklasse können andere Informationen definiert werden, beispielsweise Indizes auf den Abonnementdaten und zusätzliche Tabellen. Weitere Informationen zu Abonnementklassen finden Sie unter Definieren von Abonnementklassen.

Wenn Sie die Anwendung erstellen, verwendet Notification Services die Abonnementklassendefinition, um Tabellen, Sichten, Indizes und gespeicherte Prozeduren für die Abonnementklasse zu erstellen.

Die WeatherCity-Abonnementklasse

Für diese Anwendung fügen Sie eine WeatherCity-Abonnementklasse zur ADF hinzu. Diese Abonnementklasse verfügt über drei Felder: DeviceName, SubscriberLocale und City. Das City-Feld ist das wichtige Feld für diese Anwendung. Wenn Abonnenten Wetterabonnements erstellen, müssen sie den Namen einer Stadt angeben.

Die Abonnementfelder DeviceName und SubscriberLocale werden definiert, sodass Sie Unterstützung für mehrere Geräte und Gebietsschemas hinzufügen können.

Von der Abonnementklasse wird auch eine Benachrichtigungsgenerierungsabfrage definiert. Zum Schreiben dieser Abfrage müssen Sie wissen, welche Ereignisdaten verfügbar sind, welche Benachrichtigungsdaten Sie produzieren möchten und welche Abonnementdaten verfügbar sind:

  • Wie in Lektion 3 gezeigt, verfügt die WeatherData-Ereignisklasse über fünf Felder: City, Date, Low, High und Forecast.
  • Die Abonnementklasse weist ein City-Feld auf.
  • Wie in Lektion 4 gezeigt, verfügt die WeatherAlerts-Benachrichtigungsklasse über die gleichen Felder wie die Ereignisklasse (City, Date, Low, High und Forecast).
  • Denken Sie auch daran, dass die zugrunde liegende Benachrichtigungstabelle die folgenden Felder aufweist: SubscriberId, DeviceName und SubscriberLocale.

Diese Felder werden in den Ansichten zu Spalten. Mithilfe dieser Felder können Sie die Ereignis- und Abonnementansichten verknüpfen und Daten in die Benachrichtigungsansicht einfügen.

INSERT INTO WeatherAlerts(SubscriberId, 
   DeviceName, SubscriberLocale, City, Date, Low, High, 
   Forecast)
SELECT s.SubscriberId, s.DeviceName, s.SubscriberLocale,
    e.City, e.Date, e.Low, e.High, e.Forecast
FROM WeatherData e, WeatherCity s
WHERE e.City = s.City;

Wenn diese Abfrage von Notification Services ausgeführt wird, wird die aktuelle Reihe von Ereignissen in der Ereignisklassensicht mit den Abonnements in der Abonnementklassensicht basierend auf Übereinstimmungen zwischen den Werten des Ereignis- und des Abonnementfeldes City verknüpft. Von Notification Services werden die Ergebnisse dann in die Benachrichtigungssicht eingefügt.

Hinzufügen der Abonnementklasse zur ADF

Durch den XML-Code in diesem Abschnitt wird die Abonnementklasse definiert. Überprüfen Sie den XML-Code, und folgen Sie dann den Anweisungen zum Kopieren des XML-Codes in den ADF-Code.

So fügen Sie der ADF die Abonnementklasse hinzu

  1. Klicken Sie auf Code kopieren, um den XML-Code in die Windows-Zwischenablage zu kopieren.

    <!-- Subscription Classes -->
    <SubscriptionClasses>
      <SubscriptionClass>
        <SubscriptionClassName>WeatherCity</SubscriptionClassName>
        <Schema>
          <Field>
            <FieldName>DeviceName</FieldName>
            <FieldType>nvarchar(255)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
          <Field>
            <FieldName>SubscriberLocale</FieldName>
            <FieldType>nvarchar(10)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
          <Field>
            <FieldName>City</FieldName>
            <FieldType>nvarchar(40)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
        </Schema>
        <EventRules>
          <EventRule>
            <RuleName>WeatherEventRule</RuleName>
            <EventClassName>WeatherData</EventClassName>
            <Action>
              INSERT INTO WeatherAlerts(SubscriberId, 
                 DeviceName, SubscriberLocale, City, Date, Low, High, 
                 Forecast)
              SELECT s.SubscriberId, s.DeviceName, s.SubscriberLocale,
                  e.City, e.Date, e.Low, e.High, e.Forecast
              FROM WeatherData e, WeatherCity s
              WHERE e.City = s.City;
            </Action>
          </EventRule>
        </EventRules>
      </SubscriptionClass>
    </SubscriptionClasses>
    
  2. Öffnen Sie im Projektmappen-Explorer die Datei WeatherADF.xml.

  3. Ersetzen Sie den folgenden XML-Code durch den gerade kopierten Code.

    <!-- Subscription Classes -->

    <SubscriptionClasses></SubscriptionClasses>

  4. Klicken Sie im Menü Datei auf WeatherADF.xml speichern.

Aktualisieren der Instanz von Notification Services

Nach dem Ändern der ADF aktualisieren Sie die Instanz von Notification Services, um der Anwendungsdatenbank Abonnementklassenobjekte hinzuzufügen.

So aktualisieren Sie die Instanz von Notification Services

  1. Erweitern Sie im Objekt-Explorer Notification Services.

  2. Klicken Sie mit der rechten Maustaste auf Lernprogramm, zeigen Sie auf Aufgaben, und wählen Sie dann Update aus.

  3. Klicken Sie im Dialogfeld Instanz aktualisieren auf Durchsuchen, suchen Sie die Datei TutorialICF.xml, und klicken Sie dann auf Öffnen.

  4. Überprüfen Sie die Parameterwerte im Bereich Parameter.

  5. Klicken Sie auf OK.

  6. Überprüfen Sie das Dialogfeld Notification Services - Updatezusammenfassung, und klicken Sie dann auf Update.

  7. Klicken Sie nach dem Abschluss des Updates auf Schließen.

Überprüfen der Änderungen in der Anwendungsdatenbank

Wenn Sie die Instanz aktualisieren, werden von Notification Services Tabellen, Sichten und gespeicherte Prozeduren für die Abonnementklasse in der TutorialWeather-Anwendungsdatenbank hinzugefügt.

  • In der dbo.WeatherCityView-Ansicht werden die Abonnementdatensätze für die zugeordnete Abonnementklasse angezeigt.
  • Die dbo.WeatherCity-Ansicht enthält die aktuelle Reihe von Abonnements, die durch die Anwendung ausgewertet wird. In Ihrer Benachrichtigungsgenerierungsabfrage wählen Sie Abonnementdaten aus dieser Ansicht aus.
  • Die dbo.NSWeatherCitySubscriptions-Tabelle ist die zugrunde liegende Tabelle, die Abonnementdaten für die Abonnementklasse enthält.
    ms166580.Caution(de-de,SQL.90).gifVorsicht:
    Ändern Sie nicht direkt die Daten in den Abonnementtabellen - und -ansichten. Verwenden Sie die Abonnementverwaltungsobjekte. Weitere Informationen finden Sie unter Entwickeln von Abonnementverwaltungsschnittstellen.

Sie können zum Überprüfen dieser Objekte in der TutorialWeather-Datenbank den Objekt-Explorer verwenden. Tabellen und Ansichten für die interne Verwendung enthalten Daten, die für die interne Ablaufverfolgung und Datensuche verwendet werden.

Sie müssen möglicherweise die Ansicht des Objekt-Explorers aktualisieren, damit die neuen Objekte angezeigt werden.

Nächste Lektion

Lektion 6: Hinzufügen eines Ereignisanbieters

Siehe auch

Konzepte

Notification Services-Lernprogramm

Andere Ressourcen

Notification Services-Sichten
Notification Services-Tabellen
Definieren von Abonnementklassen
Erstellen von Benachrichtigungslösungen
Einführung in SQL Server Notification Services

Hilfe und Informationen

Informationsquellen für SQL Server 2005