Inventory Tracker-Beispiel

Aktualisiert: 17. Juli 2006

Das Inventory Tracking-Beispiel zeigt, wie Sie es Abonnenten mithilfe von Bedingungsaktionen gestatten, eigene Abfrageklauseln für ihre Abonnements zu definieren.

Szenario

Sie möchten es den Mitarbeitern in Ihrer Firma ermöglichen, dass sie über Änderungen der Lagerbestände benachrichtigt werden. Da unterschiedliche Einzelpersonen nach unterschiedlichen Informationen suchen, wie z. B. niedriger Lagerbestand, hoher Lagerbestand oder Lagerbestandsänderungen größeren Ausmaßes, möchten Sie den Mitarbeitern die Möglichkeit geben, eigene Bedingungen für ihre Abonnements zu erstellen.

In diesem Beispiel erstellen die Abonnenten Stephanie und David je ein Abonnement. Stephanie gibt in ihrem Abonnement an, dass sie benachrichtigt werden möchte, wenn sich der Endmontagenbestand für das Produkt "Road-250 Black, 48" auf 35 oder weniger Einheiten beläuft. David gibt in seinem Abonnement an, dass er benachrichtigt werden möchte, wenn sich der Teilmontagenbestand für das Produkt "HL Crankarm" auf 250 oder weniger Einheiten beläuft.

Durch einen Update-Trigger auf der Production.Inventory-Tabelle der AdventureWorks-Datenbank werden dem System Ereignisse hinzugefügt. Bei jeder Aktualisierung der Bestandsdaten übermittelt der Trigger Ereignisse an die Inventory Tracker-Anwendung. Am Ende des Generatorquantums, innerhalb dessen die Ereignisse eintreffen, werden von der Inventory Tracker-Anwendung die Regeln ausgelöst, die Ereignisdaten Abonnementdaten zuordnen und Benachrichtigungen generieren.

Die Benachrichtigungen werden per E-Mail an die Abonnenten verschickt.

Sprachen

XML, XSLT, Transact-SQL, Microsoft Visual C# oder Microsoft Visual Basic

Features

Das Inventory Tracker-Beispiel verwendet die folgenden Features von Notification Services.

Anwendungsbereich Features

Ereignisklasse

Einfache Ereigniswarteschlange, kein Verlauf

Abonnementklasse

Abonnementregeln, die ereignisgesteuert sind und Bedingungsaktionen zur Unterstützung der flexiblen Abonnementlogik verwenden. Kein Verlauf.

Benachrichtigungsklasse

Digestübermittlung

Ereignisanbieter

Nicht gehostete Ereignisanbieter, die als Update-Trigger in der AdventureWorks-Datenbank implementiert wurden

Inhaltsformatierer

XSLT-Inhaltsformatierer

Übermittlungsprotokolle

Datei- und SMTP-Übermittlungsprotokolle

Notification Services-Modul

Microsoft Windows-Dienst, der beim Registrieren der Instanz erstellt wird

Voraussetzungen

Stellen Sie vor dem Ausführen dieses Beispiels sicher, dass die folgende Software installiert ist:

  • Microsoft SQL Server 2005, einschließlich der folgenden Komponenten:
    • Database Engine (Datenbankmodul).
    • Notification Services
    • SQL Server Management Studio.
    • Notification Services-Beispiele. Diese Beispiele sind in SQL Server 2005 enthalten. Sie können die aktuelle Version der Beispiele von der SQL Server Developer-Website downloaden.
    • AdventureWorks-OLTP-Beispieldatenbank. Diese Datenbank ist im Lieferumfang von SQL Server 2005 enthalten und auch auf der SQL Server Developer-Website verfügbar. Weitere Informationen finden Sie unter Ausführen des Setups zum Installieren der Beispieldatenbanken und Beispiele für AdventureWorks.
  • .NET Framework SDK 2.0 oder Microsoft Visual Studio 2005. Das .NET Framework SDK ist kostenlos erhältlich. Siehe Installieren des .NET Framework SDK.
  • SMPT-Dienst (Simple Mail Transfer Protocol), eine IIS-Komponente (Internetinformationsdienste, Internet Information Services). Unter Microsoft Windows Server 2003 wird SMTP nicht standardmäßig mit IIS installiert. Anweisungen zur Installation und Verwendung des SMPT-Dienstes finden Sie in Ihrer Windows-Dokumentation.
    ms161543.note(de-de,SQL.90).gifHinweis:
    Stellen Sie vor dem Ausführen des Beispiels sicher, dass Ihr SMTP-Dienst beendet wurde. Durch das Beenden des SMTP-Dienstes wird verhindert, dass dieser versucht, die Nachrichten an nicht vorhandene Abonnenten zu senden. Stattdessen verbleiben die Nachrichten auf dem Server.

Erstellen des Beispiels

Zum Erstellen der Instanz müssen Sie die folgenden Schritte durchführen:

  • Erstellen einer SQL Server-Anmeldung für die Auswertung von Regeln
  • Erstellen der Instanz von Notification Services
  • Registrieren der Instanz von Notification Services
  • Erteilen von Datenbankberechtigungen für den Windows-Dienst
  • Erstellen von Triggern und Erteilen von Datenbankberechtigungen für das Regelauswertungskonto

In den folgenden Verfahren wird gezeigt, wie jede dieser Aufgaben für das InventoryTracker-Beispiel durchzuführen ist.

Schritt 1: Erstellen der SQL Server-Anmeldung für die Regelauswertung

  1. Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung zu einer Instanz von SQL Server her.

    Wenn eine Anwendung über Regeln verfügt, die Bedingungsaktionen enthalten, benötigt sie eine Anmeldung zum Auswerten von Bedingungen. Mithilfe dieser separaten Anmeldung können Sie beschränken, für welche Daten Abonnenten Regeln erstellen können, und dadurch vertrauliche Daten besser schützen.

    Bevor Sie die Instanz von Notification Services erstellen, muss die Anmeldung auf dem Server vorhanden sein, nicht aber in der Datenbank. In diesem Beispiel wird eine SQL Server-Authentifizierungsanmeldung mit dem Namen NSRulesEvaluator verwendet. In Ihrer eigenen Anwendung können Sie SQL Server-Authentifizierung oder Windows-Authentifizierung verwenden.

    ms161543.note(de-de,SQL.90).gifHinweis:
    Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.
  2. Erweitern Sie im Objekt-Explorer den Knoten Sicherheit.

  3. Klicken Sie mit der rechten Maustaste auf Anmeldungen, und wählen Sie Neue Anmeldung aus.

  4. Wählen Sie SQL Server-Authentifizierung aus.

    Dieses Konto wird nicht für Verbindungen zum Server verwendet. Es wird vom Notification Services-Generator innerhalb der Instanz des Datenbankmoduls zur Auswertung von Bedingungen verwendet.

  5. Geben Sie NSRulesEvaluator im Feld Anmeldename ein.

    Geben Sie ein Kennwort für die NSRulesEvaluator-Anmeldung ein.

  6. Wählen Sie AdventureWorks im Feld Datenbank aus.

  7. Klicken Sie auf OK.

    Falls ein Dialogfeld darauf hinweist, dass die Anmeldung keinen Zugriff auf die Standarddatenbank hat, klicken Sie auf OK. Die Datenbankberechtigungen erteilen Sie etwas später in diesem Beispiel.

Schritt 2: Erstellen der Instanz von Notification Services

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Notification Services, und wählen Sie Neue Notification Services-Instanz aus.

  2. Klicken Sie im Dialogfeld Neue Notification Services-Instanz auf Durchsuchen, navigieren Sie zum Ordner InventoryTracker, und wählen Sie die Datei InstanceConfig.xml aus.

  3. Geben Sie im Feld Parameter Werte für die drei Parameter ein:

    • SampleDirectory: der Pfad zum Stammordner des Inventory Tracker-Beispiels. Der Standardpfad lautet C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\.
    • SQLServer: der Name der Datenbankmodul-Instanz.
    • NotificationServicesHost: der Name des Servers, auf dem Notification Services ausgeführt wird. Für die Beispiele sollte dies der Name des lokalen Computers sein.
  4. Aktivieren Sie das Kontrollkästchen Instanz nach dem Erstellen aktivieren.

  5. Klicken Sie auf OK.

  6. Wenn Notification Services das Erstellen der Instanz abgeschlossen hat, klicken Sie auf Schließen.

Schritt 3: Registrieren der Instanz von Notification Services

  1. Erweitern Sie im Objekt-Explorer den Notification Services-Knoten, klicken Sie mit der rechten Maustaste auf InventoryTrackerInstance, zeigen Sie auf Tasks, und klicken Sie dann auf Registrieren.

  2. Aktivieren Sie im Dialogfeld Registrieren das Kontrollkästchen Windows-Dienst erstellen. Der Windows-Dienst führt die Instanz von Notification Services auf diesem Computer aus.

  3. Geben Sie unter Dienstkonto ein Windows-Anmeldekonto und -Kennwort ein. Dies ist das Windows-Konto, unter dem der Dienst ausgeführt wird. Falls Sie mithilfe der Windows-Authentifizierung auf SQL Server zugreifen, verwendet der Windows-Dienst dieses Konto auch zum Herstellen der Verbindung zu SQL Server.

  4. Um für den Zugriff auf SQL Server die SQL Server-Authentifizierung zu verwenden, wählen Sie SQL Server-Authentifizierung unter Authentifizierung aus und geben einen SQL Server-Anmeldenamen und ein Kennwort ein.

    Es wird empfohlen, die Windows-Authentifizierung zu verwenden.

  5. Klicken Sie auf OK.

  6. Wenn Notification Services die Registrierung der Instanz abgeschlossen hat, klicken Sie auf Schließen.

ms161543.note(de-de,SQL.90).gifHinweis:
Wenn Sie ein Notification Services-Beispiel mithilfe eines Kontos bereitstellen, das der Datenbankbesitzer oder ein Systemadministrator ist, müssen Sie dem Konto keine SQL Server-Berechtigungen erteilen. Das Erteilen dieser Berechtigungen kann zu einem Fehler führen, den Sie ignorieren können. Wenn Sie Ihre eigenen Anwendungen bereitstellen, sollten Sie Konten mit niedrigeren Privilegien verwenden, um die Sicherheit zu verbessern.

Schritt 4: Erteilen von Datenbankberechtigungen für den Windows-Dienst

  1. Erweitern Sie im Objekt-Explorer Sicherheit.

  2. Falls Sie ein neues Datenbankanmeldekonto für den Windows-Dienst erstellen müssen, klicken Sie mit der rechten Maustaste auf Anmeldungen, und wählen Sie Neue Anmeldung aus, um das Anmeldekonto zu erstellen:

    • Um die Windows-Authentifizierung zu verwenden, wählen Sie Windows-Authentifizierung aus und geben dasselbe Windows-Konto ein, das Sie auch beim Registrieren der Instanz angegeben haben.
    • Falls Sie die SQL Server-Authentifizierung verwenden müssen, wählen Sie SQL Server-Authentifizierung aus und geben denselben SQL Server-Anmeldenamen und dasselbe Kennwort ein, die Sie auch beim Registrieren der Instanz angegeben haben.
  3. Falls der vom Windows-Dienst verwendete Anmeldename bereits über Zugriff auf SQL Server verfügt, klicken Sie mit der rechten Maustaste auf den Anmeldenamen und wählen Eigenschaften aus.

  4. Wählen Sie im linken Bereich des Dialogfeldes Anmeldung die Option Benutzerzuordnung aus.

  5. Erteilen Sie Berechtigungen für die AdventureWorks-Datenbank:

    1. Wählen Sie AdventureWorks im Feld Benutzer, die dieser Anmeldung zugeordnet sind aus.
    2. Wählen Sie NSRunService im Feld Mitgliedschaft in Datenbankrolle für: AdventureWorks aus.
  6. Klicken Sie auf OK, um die Berechtigungen anzuwenden.

  7. Konfigurieren Sie die Sicherheit für den Ordner Notifications:

    1. Navigieren Sie zum Ordner Notifications des Beispiels.
    2. Klicken Sie mit der rechten Maustaste auf den Ordner Notifications, wählen Sie Freigabe und Sicherheit aus, und wählen Sie dann die Registerkarte Sicherheit aus.
    3. Klicken Sie auf Hinzufügen, und fügen Sie das vom Windows-Dienst verwendete Konto hinzu.
    4. Wählen Sie im Feld Gruppen- oder Benutzernamen das soeben hinzugefügte Konto aus.
    5. Wählen Sie im Feld Berechtigungen für die Berechtigung Schreiben aus.
    6. Klicken Sie auf OK, um die Änderungen anzuwenden.

Schritt 5: Konfigurieren der Datenbanktrigger und Erteilen von Datenbankberechtigungen

  1. Wählen Sie im Menü Datei von SQL Server Management Studio die Option Öffnen aus, und wählen Sie dann Datei aus.

  2. Öffnen Sie im Dialogfeld Datei die Datei SetupInventoryTrackerSample.sql.

    Der Standardspeicherort für diese Datei ist C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

  3. Wenn das Dialogfeld Verbindung mit Datenbankmodul herstellen angezeigt wird, geben Sie Ihre Verbindungsinformationen ein, und klicken Sie auf Verbinden.

  4. Drücken Sie die Taste F5, um die Transact-SQL-Anweisungen auszuführen.

Generieren einer Schlüsseldatei mit starkem Namen

Generieren Sie die Schlüsseldatei mithilfe der folgenden Anweisungen, falls Sie noch keine Schlüsseldatei mit starkem Namen erstellt haben.

So generieren Sie eine Schlüsseldatei mit starkem Namen

  1. Öffnen Sie eine Microsoft Visual Studio 2005-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und danach auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

    – oder –

    Öffnen Sie eine Microsoft .NET Framework-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und dann auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

  2. Wechseln Sie an der Eingabeaufforderung mit dem Befehl CD (Verzeichnis wechseln) im Eingabeaufforderungsfenster vom aktuellen Verzeichnis zu dem Ordner, in dem die Beispiele installiert sind.

    ms161543.note(de-de,SQL.90).gifHinweis:
    Klicken Sie auf Start, zeigen Sie auf Alle Programme, Microsoft SQL Server und auf Dokumentation und Lernprogramme, und klicken Sie dann auf Beispielordner, um den Ordner zu ermitteln, in dem sich die Beispiele befinden. Wenn das Standardverzeichnis verwendet wurde, befinden sich die Beispiele im Verzeichnis <Systemlaufwerk>:\Programme\Microsoft SQL Server\100\Samples.
  3. Führen Sie an der Eingabeaufforderung den folgenden Befehl zum Generieren der Schlüsseldatei aus:

    sn -k SampleKey.snk

    ms161543.note(de-de,SQL.90).gifWichtig:
    Weitere Informationen zum Schlüsselpaar mit starkem Namen finden Sie unter "Security Briefs: Starke Namen und Sicherheit im .NET Framework" unter ".NET-Entwicklung" auf der MSDN-Website.

Ausführen des Beispiels

Zum Ausführen des Beispiels müssen Sie die folgenden Schritte ausführen:

  • Starten der Instanz
  • Hinzufügen von Abonnenten und Abonnements
  • Ablegen einer XML-Datei mit Ereignissen
  • Anzeigen der resultierenden Benachrichtigungen

In den folgenden Verfahren wird gezeigt, wie Sie diese Aufgaben durchführen und anschließend die resultierenden Benachrichtigungen anzeigen können.

Schritt 1: Starten der Instanz

  1. Erweitern Sie im Objekt-Explorer Notification Services.

  2. Klicken Sie mit der rechten Maustaste auf InventoryTrackerInstance,und wählen Sie dann Starten aus.

Schritt 2: Hinzufügen von Abonnenten und Abonnements

  1. Erstellen Sie die InventoryTracker- oder InventoryTracker_VB Visual Studio-Projektmappe

    Wenn Sie mit dem Microsoft .NET Framework SDK arbeiten, führen Sie die folgenden Schritte aus:

    1. Zeigen Sie im Menü Start auf Alle Programme und dann auf Microsoft .NET Framework SDK v2.0, und klicken Sie dann auf SDK-Eingabeaufforderung.
    2. Navigieren Sie zum Stammordner des Inventory Tracker-Beispiels. Geben Sie den folgenden Befehl für den Standardspeicherort ein:
      cd \Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker
    3. Geben Sie Folgendes ein, um die Projektmappe zu erstellen
      [C#]
      msbuild InventoryTracker.sln
      [Visual Basic]
      msbuild InventoryTracker_VB.sln

    Falls Sie Visual Studio 2005 verwenden, führen Sie folgende Schritte aus:

    1. Öffnen Sie die gewünschte Projektmappendatei (InventoryTracker.sln oder InventoryTracker_VB.sln).
    2. Drücken Sie F6, um die Projektmappe zu erstellen.
  2. Führen Sie AddSubscribers.exe aus.

    Der Standardspeicherort für diesen Ordner ist C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscribers\language\AddSubscribers\bin\Debug.

  3. Führen Sie AddSubscriptions.exe aus.

    C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\language\AddSubscriptions\bin\Debug.

ms161543.note(de-de,SQL.90).gifHinweis:
Für Produktionsanwendungen, oder wenn Sie diese Anwendung unter einem eingeschränkten Konto ausführen, müssen Sie der NSSubscriberAdmin-Datenbankrolle in der Instanz- und der Anwendungsdatenbank die SQL Server-Anmeldung der Anwendung hinzufügen.

Schritt 3: Auslösen der Ereignisse

  1. Wählen Sie im Menü Datei von SQL Server Management Studio die Option Öffnen aus, und wählen Sie dann Datei aus.

  2. Öffnen Sie im Dialogfeld Datei die Datei UpdateProductInventory.sql.

    Der Standardspeicherort für diese Datei ist C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    Das Skript fügt einen Aktualisierungstrigger zur AdventureWorks-Datenbank hinzu und erteilt der NSRulesEvaluator-Anmeldung anschließend Datenbankberechtigungen.

  3. Wenn das Dialogfeld Verbindung mit Datenbankmodul herstellen angezeigt wird, geben Sie Ihre Verbindungsinformationen ein, und klicken Sie auf Verbinden.

Schritt 4: Anzeigen der Benachrichtigungen

  1. Lassen Sie Notification Services ungefähr eine Minute Zeit, um die Benachrichtigungen zu generieren.

  2. Navigieren Sie im Windows-Explorer zum Ordner Notifications des InventoryTracker-Beispiels. Dort sollten Sie eine Datei mit dem Namen FileNotifications.txt vorfinden, in der die dateibasierten Benachrichtigungen enthalten sind.

  3. Navigieren Sie zu dem Ordner, in dem E-Mail-Nachrichten abgelegt werden. Dieser befindet sich in der Regel in einem der Ordner unter C:\Inetpub\mailroot. Je nach SMTP-Serverstatus befinden sich die Benachrichtigungen entweder im Abholordner oder im Warteschlangenordner. Wenn der SMTP-Dienst ausgeführt wird, werden die Nachrichten in den Ordner Badmail verschoben.

Schritt 5: Zurücksetzen des Lagerbestands

  1. Wählen Sie im Menü Datei von SQL Server Management Studio die Option Öffnen aus, und wählen Sie dann Datei aus.

  2. Öffnen Sie im Dialogfeld Datei die Datei ResetProductInventory.sql.

    Der Standardspeicherort für diese Datei ist C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    Das Skript setzt die AdventureWorks-Datenbank in den vorherigen Status zurück, was ein erneutes Ausführen des Beispiels ermöglicht.

  3. Wenn das Dialogfeld Verbindung mit Datenbankmodul herstellen angezeigt wird, geben Sie Ihre Verbindungsinformationen ein, und klicken Sie auf Verbinden.

Entfernen des Beispiels

Mithilfe des folgenden Verfahrens können Sie das Inventory Tracker-Beispiel entfernen.

So entfernen Sie das Inventory Tracker-Beispiel

  1. Öffnen Sie im Objekt-Explorer von SQL Server Management Studio den Ordner Notification Services.

  2. Klicken Sie mit der rechten Maustaste auf InventoryTrackerInstance, und wählen Sie Beenden aus.

  3. Klicken Sie mit der rechten Maustaste auf InventoryTrackerInstance, zeigen Sie auf Tasks, und wählen Sie dann Registrierung aufheben aus.

  4. Klicken Sie mit der rechten Maustaste auf InventoryTrackerInstance, zeigen Sie auf Tasks, und wählen Sie dann Löschen aus.

Siehe auch

Andere Ressourcen

Beispiele für SQL Server Notification Services

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Neuer Inhalt:
  • Ein Hinweis zum Ausführen von Beispielen mithilfe von Datenbankbesitzer-Berechtigungen wurde hinzugefügt.

05. Dezember 2005

Geänderter Inhalt:
  • Die Anweisungen zum Generieren einer Schlüsseldatei wurden geändert, einschließlich des Namens und Speicherortes der Schlüsseldatei.
  • Informationen über die bewährten Sicherheitsmethoden für Regelauswertungskonten wurden hinzugefügt.