Stock-Beispiel

Aktualisiert: 17. Juli 2006

Das Stock-Beispiel ist eine Microsoft SQL Server 2005 Notification Services-Anwendung, die sowohl ereignisgesteuerte als auch geplante Abonnements verwendet, um Benachrichtigungen auf der Basis von Aktienmarktdaten zu erzeugen. Abonnierte Benutzer werden benachrichtigt, wenn der Aktienkurs einen bestimmten Triggerwert überschreitet.

Dieses Beispiel zeigt außerdem, wie Sie das Notification Services-Modul in einer benutzerdefinierten Anwendung hosten, statt einen von Notification Services erstellten Microsoft Windows-Dienst zu verwenden.

Szenario

Investoren abonnieren Aktienkursbenachrichtigungen. Jedes Abonnement gibt ein Aktiensymbol an und ist entweder ereignisgesteuert oder geplant.

Für ereignisgesteuerte Abonnements generiert Notification Services beim Auftreten von Aktienereignissen eine Benachrichtigung, wenn die folgenden Bedingungen erfüllt sind:

  • Das Aktiensymbol im Ereignis entspricht dem Aktiensymbol im Abonnement.
  • Der neue Aktienkurs ist höher als der Triggerwert des Abonnements.
  • Der vormals hohe Aktienkurs, der in einem Aktienereignisverlauf festgehalten wurde, ist niedriger als der Triggerwert. Damit wird sichergestellt, dass Abonnenten nicht mehrere Benachrichtigungen für dieselbe Aktie erhalten.

Notification Services aktualisiert den Verlauf, wenn der neue Aktienkurs über dem im Verlauf festgehaltenen Kurs liegt oder das Aktiensymbol nicht im Verlauf vorhanden ist.

Benachrichtigungen für ereignisgesteuerte Abonnements werden nacheinander übermittelt.

Bei geplanten Abonnements vergleicht Notification Services die Daten im Aktienkursverlauf mit geplanten Abonnements. Eine Übereinstimmung liegt vor, wenn das Aktiensymbol im Abonnement einem Aktiensymbol im Verlauf entspricht.

Für jede Übereinstimmung wird von Notification Services eine Benachrichtigung erzeugt. Der Verteiler fasst mehrere Benachrichtigungen für einen einzelnen Abonnenten zu einer Benachrichtigung zusammen, die Daten zum Aktienportfolio des betreffenden Abonnenten zur Verfügung stellt.

Sprachen

XML, XSD, XSLT und Microsoft Visual C# oder Microsoft Visual Basic

Features

Anwendungsbereich Features

Ereignisklasse

Eine Ereignisklasse und ein Ereignisverlauf

Abonnementklasse

Zwei Abonnementklassen, eine für ereignisgesteuerte Abonnements und eine für geplante Abonnements

Benachrichtigungsklasse

Zwei Benachrichtigungsklassen, eine für ereignisgesteuerte Benachrichtigungen und eine für geplante Benachrichtigungen. Die geplanten Benachrichtigungen verwenden die Digestübermittlung.

Ereignisanbieter

Ein FileSystemWatcher-Ereignisanbieter und ein benutzerdefinierter, nicht gehosteter Ereignisanbieter

Inhaltsformatierer

Notification Services XSLT-Inhaltsformatierer. Jede Benachrichtigungsklasse gibt eine eigene XSLT-Datei für den Inhaltsformatierer an.

Übermittlungsprotokolle

Datei- und SMTP-Übermittlungsprotokolle

Notification Services-Modul

In einer Konsolenanwendung gehostet

Voraussetzungen

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

  • SQL Server 2005, einschließlich der folgenden Komponenten:
    • 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.
    • .NET Framework SDK 2.0 oder Microsoft Visual Studio 2005. Das .NET Framework SDK ist kostenlos erhältlich. Siehe Installieren des .NET Framework SDK.

Erstellen der Projektmappe

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.

    ms160739.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

    ms160739.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.

Erstellen Sie die Projektmappe, damit Sie unmittelbar danach die Instanz starten können.

Erstellen der Visual Studio-Projektmappe

  • Wenn Sie mit dem .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 Stock-Beispiels. Geben Sie den folgenden Befehl für den Standardspeicherort ein:
      cd C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. Geben Sie Folgendes ein, um die Projektmappe zu erstellen:
      [C#]
      msbuild Stock.sln
      [Visual Basic] 
      msbuild Stock_VB.sln
  • Oder führen Sie die folgenden Schritte aus, falls Sie Visual Studio 2005 verwenden:

    1. Öffnen Sie die gewünschte Projektmappendatei (Stock.sln oder Stock_VB.sln).
    2. Erstellen Sie die Projektmappe.

Bereitstellen der Instanz von Notification Services

Um die Instanz von Notification Services bereitzustellen, müssen Sie die folgenden Schritte ausführen:

  • Erstellen der Instanz von Notification Services
  • Registrieren der Instanz von Notification Services
  • Erteilen Sie SQL Server-, Datenbank- und Ordnerberechtigungen

Die folgenden Verfahren zeigen, wie diese Aufgaben im Einzelnen ausgeführt werden.

Schritt 1: Erstellen der Instanz von Notification Services

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

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

  3. Klicken Sie im Dialogfeld Neue Notification Services-Instanz auf Durchsuchen, und wählen Sie die Datei InstanceConfig.xml im Stammordner des Stock-Beispiels aus.

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

    • SampleDirectory ist der Pfad zum Stammordner des Stock-Beispiels. Der Standardpfad lautet C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\Stock.
    • NotificationServicesHost ist der Name des lokalen Servers.
    • SQLServer ist der Name der SQL Server-Instanz.
  5. Aktivieren Sie das Kontrollkästchen Instanz nach dem Erstellen aktivieren.

  6. Klicken Sie auf OK.

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

Schritt 2: Registrieren der Instanz von Notification Services

  1. Öffnen Sie in SQL Server Management Studio den Notification Services-Knoten, klicken Sie mit der rechten Maustaste auf StockInstance, zeigen Sie auf Tasks, und wählen Sie dann Registrieren aus.

    Wählen Sie keine Optionen aus. Das Modul wird von einer benutzerdefinierten Anwendung gehostet. Erstellen Sie deshalb nicht den Windows-Dienst.

  2. Klicken Sie auf OK.

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

ms160739.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 3: Erteilen der SQL Server-, Windows- und Ordnerberechtigungen

  1. Erweitern Sie im Objekt-Explorer den Knoten Sicherheit.

  2. Falls Sie ein neues Datenbankanmeldekonto 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/das Sie auch beim Registrieren der Instanz angegeben haben.
  3. Falls der zum Ausführen dieses Beispiels 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 StockInstanceNSMain-Datenbank:

    1. Wählen Sie StockInstanceNSMain im Feld Benutzer, die dieser Anmeldung zugeordnet sind aus.
    2. Wählen Sie NSRunService im Feld Mitgliedschaft in Datenbankrolle für: StockInstanceNSMain aus.
  6. Erteilen Sie Berechtigungen für die StockInstanceStock-Datenbank:

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

  8. Konfigurieren Sie die Sicherheit für den Ordner Events:

    1. Navigieren Sie im Windows-Explorer zum Ordner Notifications des Stock-Beispiels.
    2. Klicken Sie mit der rechten Maustaste auf den Ordner Events, 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 zum Ausführen des Beispiels 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 Berechtigungen Lesen und Ändern aus.
    6. Klicken Sie auf OK, um die Änderungen anzuwenden.
  9. Konfigurieren Sie die Sicherheit für den Ordner Notifications:

    1. Navigieren Sie zum Ordner Notifications des Stock-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 zum Ausführen des Beispiels 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.

Ausführen des Beispiels

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

  • Starten der Instanz
  • Hinzufügen von Abonnenten und Abonnements
  • Übermitteln von Ereignissen

Nachdem Sie diese Aufgaben ausgeführt haben, generiert Notification Services 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 des gehosteten Moduls

  1. Stellen Sie sicher, dass das Konto, unter dem Sie das gehostete Modul ausführen, ein Mitglied der Windows-Gruppe SQLServer2005NotificationServicesUser$Computername ist, die Lese- und Ausführungsberechtigungen für Notification Services-Binärdateien hat, oder dass das Konto über die Berechtigungen verfügt, die zum Lesen und Ausführen der im Ordner C:\Programme\Microsoft SQL Server\90\Notification Services gespeicherten Dateien erforderlich sind.

  2. Navigieren Sie im Windows-Explorer zum Ordner HostableExecutionEngine\language\HostableExecutionEngine\bin\Debug des Stock-Beispiels.

  3. Doppelklicken Sie auf HostableExecutionEngine.exe, um die Konsolenanwendung auszuführen, die das Notification Services-Modul hostet.

    Wichtig Drücken Sie nicht die Eingabetaste. Das Modul muss für die Notification Services-Anwendung ausgeführt werden, um Benachrichtigungen zu generieren.

Schritt 2: Hinzufügen von Abonnenten, Abonnements und Ereignissen

  1. Führen Sie AddSubscribers.exe aus.

    Die EXE-Datei befindet sich im Unterordner AddSubscribers\language\AddSubscribers\bin\Debug des Stock-Beispiels.

    Drücken Sie nach dem Hinzufügen der Abonnenten die Eingabetaste, um die Konsolenanwendung zu schließen.

  2. Führen Sie AddSubscriptions.exe aus.

    Die EXE-Datei befindet sich im Unterordner AddSubscribers\language\AddSubscriptions\bin\Debug des Stock-Beispiels.

    Drücken Sie nach dem Hinzufügen der Abonnements die Eingabetaste, um die Konsolenanwendung zu schließen.

  3. Führen Sie NonHostedEventProvider.exe aus.

    Die EXE-Datei befindet sich im Unterordner NonHostedEventProvider\language\NonHostedEventProvider\bin\Debug des Stock-Beispiels.

    Dadurch werden der Anwendung mithilfe eines nicht gehosteten Ereignisanbieters, der außerhalb der Anwendung ausgeführt wird, Ereignisse hinzugefügt. Im nächsten Schritt wird veranschaulicht, wie Ereignisse an einen gehosteten FileSystemWatcher-Ereignisanbieter übermittelt werden.

ms160739.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: Übermitteln von Ereignissen durch Ablegen einer Ereignisdatei

  1. Navigieren Sie im Windows-Explorer zum Stammordner des Stock-Beispiels, und kopieren Sie die Datei EventData.xml in den Unterordner Events.

    ms160739.note(de-de,SQL.90).gifHinweis:
    Da Sie bereits Ereignisse mithilfe eines nicht gehosteten Ereignisanbieters übermittelt haben, ist dieser Schritt optional. Wenn Sie keine weiteren Ereignisse übermitteln und keine weiteren Benachrichtigungen generieren möchten, führen Sie den nächsten Schritt aus, um Benachrichtigungen anzuzeigen.

    Wenn Sie die Datei ablegen, liest der FileSystemWatcher-Ereignisanbieter die darin enthaltenen Daten aus, sendet sie an die Anwendung und ändert anschließend die Dateierweiterung in .done.

    Tritt während des Lesens oder Sendens der Daten ein Fehler auf, ändert der Ereignisanbieter die Dateierweiterung in .err. Weitere Einzelheiten zu etwaigen Fehlern sind im Anwendungsprotokoll in der Windows-Ereignisanzeige zu finden.

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 Stock-Beispiels. Dort sollten Sie eine Datei mit dem Namen FileNotifications.txt finden, in der die von dieser Anwendung übermittelten 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.

ms160739.note(de-de,SQL.90).gifHinweis:
Wenn Sie eine weitere Benachrichtigung generieren möchten, ohne das Beispiel neu zu erstellen oder zu ändern, führen Sie die folgende Abfrage aus: USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

Beenden des Moduls

Wenn Sie die Ereignisse übermittelt und die resultierenden Benachrichtigungen angezeigt haben, können Sie das Notification Services-Modul beenden.

So beenden Sie das Modul

  • Drücken Sie im HostableExecutionEngine-Konsolenfenster die Eingabetaste, um das Modul zu beenden.

Entfernen des Beispiels

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

So entfernen Sie das Stock-Beispiel

  1. Erweitern Sie im Objekt-Explorer Notification Services.

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

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

Siehe auch

Andere Ressourcen

Hosten des Notification Services-Moduls
Beispiele für SQL Server Notification Services
Sichern von Notification Services

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Hinzugefügter Inhalt:
  • In den Schritten 3 und 4 unter Ausführen des Beispiels wurden Informationen zu den Optionen zum Übermitteln von Ereignissen mit dem nicht gehosteten Ereignisanbieter sowie mit dem FileSystemWatcher-Ereignisanbieter hinzugefügt.
  • Ein Hinweis zum Verwenden der NSSubscriberAdmin-Datenbankrolle wurde hinzugefügt.

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.
  • Der Abschnitt zu den Berechtigungen wurde aktualisiert, um herauszustellen, welches Konto eine Berechtigung benötigt.