FlightNmo-Beispiel

Aktualisiert: 17. Juli 2006

Das FlightNmo-Beispiel zeigt, wie Sie mithilfe von Notification Services Management Objects (NMO) die Flight-Beispielanwendung erstellen.

Szenario

Reisekunden abonnieren Benachrichtigungen zu Flugpreisen. In jedem Abonnement geben Sie einen Abflugs- und einen Ankunftsort, einen Zielpreis und wahlweise eine Fluggesellschaft an.

Die Betreiberfirma der FlightNmo-Anwendung übermittelt Flugpreisereignisdaten an die Anwendung durch Ablegen der XML-Daten in einen beobachteten Ordner. Diese Daten werden von Notification Services abgeholt, und es werden Benachrichtigungen für Abonnenten mit den entsprechenden Abonnements generiert.

Benachrichtigungen werden generiert, wenn die folgenden Bedingungen erfüllt sind:

  • Der Ticketpreis des Ereignisses ist kleiner als der Ticketpreis des Abonnements.
  • Der Abflugsort des Ereignisses ist gleich dem Abflugsort des Abonnements.
  • Der Ankunftsort des Ereignisses ist gleich dem Ankunftsort des Abonnements.
  • Die Fluggesellschaft des Ereignisses ist gleich der Fluggesellschaft des Abonnements (falls angegeben).

Wenn für einen Abonnenten mehrere Benachrichtigungen gleichzeitig gesendet werden müssen, werden diese Benachrichtigungen von Notification Services mithilfe der Digestübermittlung kombiniert. Die Benachrichtigungen werden dann in Notification Services mithilfe eines XSLT-Inhaltsformatierers formatiert und über den angegebenen Übermittlungskanal (E-Mail oder Datei) verteilt.

Sprachen

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

Features

Im FlightNmo-Beispiel werden die folgenden Features von Notification Services verwendet:

Anwendungsbereich Features

Ereignisklasse

Einfache Ereigniswarteschlange (kein Verlauf).

Abonnementklasse

Ereignisgesteuerte Abonnements.

Benachrichtigungsklasse

Digestübermittlung.

Ereignisanbieter

FileSystemWatcher-Ereignisanbieter.

Inhaltsformatierer

XSLT-Inhaltsformatierer.

Übermittlungsprotokolle

Datei- und SMTP-Übermittlungsprotokolle.

Instanz- und Anwendungsentwicklung

NMO

Voraussetzungen

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

  • SQL Server 2005, einschließlich der folgenden Komponenten:
    • Database Engine (Datenbankmodul).
    • Modul und Clientkomponenten von 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.

Stellen Sie sicher, dass die folgenden Windows-Komponenten installiert und betriebsfähig sind:

  • 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. Anleitungen zur Installation und Verwendung des SMPT-Dienstes finden Sie in Ihrer Windows-Dokumentation.

Stellen Sie außerdem sicher, dass die Instanz von Datenbankmodul gestartet wird, die verwendet werden soll.

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.

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

    ms160822.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 der Notification Services-Instanz

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

  • Erstellen und registrieren Sie die Instanz von Notification Services.
  • Erteilen Sie SQL Server-, Datenbank- und Ordnerberechtigungen.

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

Schritt 1: Erstellen der Visual Studio-Projektmappe

  1. Erstellen Sie zunächst die Visual Studio-Projektmappe.

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

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

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

    1. Öffnen Sie die gewünschte Projektmappendatei (FlightNmo.sln oder FlightNmo_VB.sln).
    2. Klicken Sie in Visual Studio im Menü Erstellen auf Projektmappe erstellen.

Schritt 2: Erstellen und registrieren Sie die Notification Services-Instanz

  1. Wechseln Sie an der Eingabeaufforderung in den Ordner CreateFlightNmoInstance Debug.

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. Führen Sie CreateFlightNmoInstance.exe wie nachfolgend gezeigt aus, um die Instanz zu erstellen, zu registrieren und zu aktivieren. Die Argumente SqlUserName und SqlPassword sind nur bei Verwendung der SQL Server-Authentifizierung erforderlich. Alle anderen Argumente sind erforderlich:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    Verwenden Sie beim Ausführen dieses Befehls die folgenden Werte für die weiter oben genannten Platzhalter:

    • databaseServer ist die Instanz des Datenbankmoduls, auf der die Instanz- und Anwendungsdatenbanken erstellt werden sollen.
    • directory ist das Beispielverzeichnis. Der Standardspeicherort lautet C:\Programme\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo.
    • NotificationServicesHost ist der Server, auf dem die Notification Services-Modulkomponenten ausgeführt werden. Für dieses Beispiel sollten Sie Ihren lokalen Computer verwenden.
    • NSServiceUserName ist das Konto, unter dem der Windows-Dienst NS$FlightNmoInstance ausgeführt wird.
    • NSServicePwd ist das Kennwort für das NSServiceUserName-Konto.
    • Geben Sie die SQL Server-Authentifizierungsargumente NSServiceSqlUserName und NSServiceSqlPwd nur an, wenn Sie die SQL Server-Authentifizierung verwenden. Falls diese Argumente angegeben werden, verwendet Sie der Windows-Dienst, um eine Verbindung zum Datenbankmodul herzustellen.

    Nach Abschluss dieses Befehls verfügen Sie über zwei neue Datenbanken und einen Windows-Dienst. Die Datenbanken sind mit FlightNmoInstanceNSMain und FlightNmoInstanceFlightNmo benannt. Der Windows-Dienst ist mit NS$FlightNmoInstance benannt.

ms160822.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 Sie SQL Server- und Datenbankberechtigungen

  1. Öffnen Sie SQL Server Management Studio und stellen Sie eine Verbindung zu der Instanz des Datenbankmoduls her, die Sie im SqlServer-Argument weiter oben in diesem Thema angegeben haben.

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

  3. 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 Sie dasselbe Windows-Konto ein, das Sie im ServiceUserName-Argument weiter oben in diesem Thema angegeben haben.
    • Um die SQL Server-Authentifizierung zu verwenden, wählen Sie SQL Server-Authentifizierung aus, und geben sie die Werte ein, die Sie für die Argumente SqlUserName und SqlPassword weiter oben in diesem Thema angegeben haben.
  4. 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 Sie Eigenschaften aus.

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

  6. Erteilen Sie Berechtigungen für die FlightNmoInstanceNSMain-Datenbank:

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

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

  9. Konfigurieren Sie den Ordner Events mithilfe vom Windows-Explorer:

    1. Suchen Sie den Ordner Events des 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 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 Berechtigungen Lesen und Ändern aus.
    6. Klicken Sie auf OK, um die Änderungen anzuwenden.
  10. Konfigurieren Sie die Sicherheit für den Ordner Notifications:

    1. Suchen Sie den 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.

Ausführen des Beispiels

Zum Ausführen des Beispiels sind folgende Schritte erforderlich:

  • Starten der Instanz.
  • Hinzufügen von Abonnenten und Abonnements.
  • Ablegen einer XML-Datei, die Ereignisse enthält.
  • Anzeigen der resultierenden Benachrichtigungen.

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

Schritt 1: Starten Sie die Instanz

  1. Öffnen Sie im Objekt-Explorer den Ordner Notification Services.

  2. Klicken Sie mit der rechten Maustaste auf FlightNmoInstance und wählen Sie Starten aus.

Schritt 2: Fügen Sie Abonnenten und Abonnements hinzu

  1. Führen Sie AddSubscribers.exe aus.

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

  2. Führen Sie AddSubscriptions.exe aus.

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

ms160822.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 Sie die Ereignisse

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

    Sobald 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 dem gemeldeten Fehler sind in der Windows-Ereignisanzeige zu finden.

Schritt 4: Zeigen Sie die Benachrichtigungen an

  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 FlightNmo-Beispiels. Dort sollten Sie eine Datei mit dem Namen FileNotifications.txt finden, 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.

Entfernen des Beispiels

Führen Sie diese Schritte aus, um das FlightNmo-Beispiel zu entfernen.

So entfernen Sie das FlightNmo-Beispiel

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

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

  3. Klicken Sie mit der rechten Maustaste auf FlightNmoInstance, zeigen Sie auf Tasks, und klicken Sie dann auf Registrierung aufheben.

  4. Klicken Sie mit der rechten Maustaste auf FlightNmoInstance, zeigen Sie auf Tasks, und klicken Sie dann auf Löschen.

Siehe auch

Andere Ressourcen

Beispiele für SQL Server Notification Services
Sichern von 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.