Beheben von häufig auftretenden Notification Services-Problemen

Microsoft hat aus Problemen und Lösungen von Notification Services-Benutzern folgende Liste zusammengestellt.

ms172473.note(de-de,SQL.90).gifWichtig:
Wechseln Sie bei der Problembehandlung einer Notification Services-Anwendung zuerst zum Anwendungsprotokoll in der Windows-Ereignisanzeige. Ereignisse im Anwendungsprotokoll stellen häufig die beste Möglichkeit zur Bestimmung der Ursache eines Anwendungsproblems dar.

Problembehandlung bei der Bereitstellung und Verwaltung

Beim Erstellen einer Instanz wird ein Timeoutfehler erzeugt

Die Prozesse, die eine Notification Services-Instanz erstellen, führen mehrere Tasks aus, und jeder Task besitzt ein Zeitlimit. Der Datenbankerstellungsprozess dauert zumeist länger als die anderen Vorgänge. Das Zeitlimit für diesen Vorgang beträgt 10 Minuten, was normalerweise ausreichend ist. Wenn die Instanzkonfiguration oder die Anwendungsdefinitionen jedoch sehr große Datenbankgrößen (mehrere GB) angeben, kann beim Erstellungsprozess ein Timeout auftreten. In diesem Fall wird eine Timeoutmeldung angezeigt.

Zum erfolgreichen Erstellen der Instanz müssen Sie die Datenbank-Dateigrößen in der ADF und der Konfigurationsdatei reduzieren und dann die Instanz erstellen. Anschließend können Sie die Größen der Datenbankdateien mithilfe von SQL Server Management Studio oder Transact-SQL-Anweisungen erhöhen.

Beim Erstellen einer Instanz wird aufgrund eines vollen Transaktionsprotokolls ein Fehler erzeugt

Wenn beim Hinzufügen ein Protokoll voll oder fast voll ist, kann beim Erstellen einer Instanz von Notification Services ein Fehler auftreten. Erhöhen Sie die Werte für size und maxsize des Transaktionsprotokolls, und versuchen Sie es dann erneut.

Beim Aktualisieren einer Instanz wird ein Fehler erzeugt

Beim Aktualisieren einer Notification Services-Instanz kann aufgrund von Fehlern in einer Anwendungsdefinition oder Instanzkonfiguration ein Fehler erzeugt werden. Vor dem Aktualisieren einer Instanz sollten Sie alle XML-Dateien überprüfen, um die Wahrscheinlichkeit eines Auftretens dieses Fehlers zu reduzieren. Wenn ein Fehler auftritt, reparieren Sie die Datei, und versuchen Sie erneut, die Aktualisierung auszuführen.

Sichern Sie vor dem Aktualisieren einer Instanz immer die Instanz- und Anwendungsdatenbanken, da diese durch das Aktualisieren der Instanz geändert werden.

Weitere Informationen zum Aktualisieren einer Instanz finden Sie unter Aktualisieren von Instanzeigenschaften. Weitere Informationen zum Aktualisieren einer Anwendung finden Sie unter Aktualisieren einer Anwendung.

Der Windows-Dienst wird nicht gestartet

Wenn Sie den Windows-Dienst NS$instanceName zum Ausführen der Notification Services-Modulkomponenten verwenden und der Windows-Dienst nicht gestartet wird, ist das Dienstkennwort möglicherweise falsch, stimmt der Instanzname, den Sie zu starten versuchen, möglicherweise nicht genau mit dem Notification Services-Instanznamen überein, kann möglicherweise nicht auf die Datenbanken zugegriffen werden oder verfügt das Windows-Benutzerkonto, unter dem der Dienst gemäß der Konfiguration ausgeführt werden soll, nicht über die Berechtigungen, sich als Dienst anzumelden. Versuchen Sie Folgendes, um das Problem zu beheben:

  • **Stellen Sie sicher, dass das Dienstkonto Mitglied der Gruppe SQLServer2005NotificationServicesUser$**ComputerName in Windows ist. Mitglieder der Gruppe SQLServer2005NotificationServicesUser$ComputerName besitzen die Berechtigung zum Lesen und Ausführen von Notification Services-Binärdateien, einschließlich NSService.exe.
  • Setzen Sie das Windows-Kennwort zurück. Wenn Sie die Befehle von Notification Services zum Konfigurieren eines Dienstkennwortes verwenden und das Kennwort Sonderzeichen enthält oder falsch eingegeben wurde, wird der NS$instanceName-Dienst nicht gestartet.
    Aktualisieren Sie das Kennwort mithilfe der Dienste-Anwendung, um diesen Fehler zu beheben:
    1. Öffnen Sie in der Systemsteuerung das Tool Verwaltung.
    2. Öffnen Sie Dienste.
    3. Klicken Sie mit der rechten Maustaste auf den **NS$**instanceName-Dienst (instanceName stellt den Namen der Notification Services-Instanz dar), und klicken Sie dann auf Eigenschaften.
    4. Klicken Sie auf die Registerkarte Anmeldung, geben Sie Ihr Kennwort in die Textfelder Kennwort und Kennwortbestätigen ein. Klicken Sie auf OK.
    5. Klicken Sie mit der rechten Maustaste auf den Dienst, und klicken Sie dann auf Starten.
  • Überprüfen Sie die Datenbanken. Wenn der Dienst nicht auf die Instanz- und Anwendungsdatenbanken zugreifen kann, wird er nicht gestartet.
    • Ist der Datenbankname in der Instanzregistrierung richtig?
    • Wird die Instanz von Datenbankmodul ausgeführt, die die Instanz- und Anwendungsdatenbanken hostet?
    • Sind die Instanz- und Anwendungsdatenbanken verfügbar?
    • Gibt es Netzwerkprobleme, die den Dienst am Zugriff auf die Datenbanken hindern würden?
  • Starten Sie den Dienst aus der Dienste-Anwendung. Wenn Sie den Dienst mithilfe des Befehls net start starten, müssen die an der Eingabeaufforderung verwendeten Zeichen mit den in der Konfigurationsdatei verwendeten Unicode-Zeichen übereinstimmen. Stimmen die Zeichen nicht überein, kann die Instanz nicht gestartet werden.
    Starten Sie den Dienst mithilfe der Windows-Dienste-Anwendung, um diesen Fehler zu beheben:
    1. Öffnen Sie in der Systemsteuerung das Tool Verwaltung.
    2. Öffnen Sie Dienste.
    3. Klicken Sie mit der rechten Maustaste auf den **NS$**instanceName-Dienst, und klicken Sie dann auf Starten.

Fehler werden nicht in das Anwendungsprotokoll geschrieben

Wird das Notification Services-Modul nicht gestartet und enthält das Anwendungsprotokoll keine Fehler, die auf die Ursache hinweisen, ist das Anwendungsprotokoll möglicherweise voll. Gehen Sie wie folgt vor, um das Anwendungsprotokoll neu zu konfigurieren:

  1. Öffnen Sie in der Systemsteuerung das Tool Verwaltung.
  2. Öffnen Sie Ereignisanzeige.
  3. Klicken Sie mit der rechten Maustaste auf Anwendung, und klicken Sie dann auf Eigenschaften.
  4. Führen Sie eine oder beide der folgenden Aktionen aus:
    • Erhöhen Sie den Wert für Maximale Protokollgröße.
    • Wählen Sie Ereignisse bei Bedarf überschreiben aus.

Im Anwendungsprotokoll werden unerwartete Fehler angezeigt

Versuchen Sie, das Notification Services-Modul neu zu starten, wenn Sie unerwartete Fehler im Anwendungsprotokoll erhalten.

Wenn Sie z. B. eine Anwendung aus einer Instanz entfernen, während der Windows-Dienst ausgeführt wird, und dann im Ereignisprotokoll für die Anwendung, die Sie entfernt haben, Fehler angezeigt werden, sollte ein Neustart des Windows-Dienstes dafür sorgen, dass die Fehler nicht wieder auftreten.

Weitere Informationen finden Sie unter Starten und Beenden von Notification Services-Instanzen.

Problembehandlung bei der Ereignisauflistung

Ich kann keine Ereignisse an eine Anwendung übermitteln

Überprüfen Sie bei der Problembehandlung der Ereignisauflistung Folgendes:

  • Wenn Sie einen gehosteten Ereignisanbieter verwenden, überprüfen Sie, ob das Notification Services-Modul ausgeführt wird, auf dem der Ereignisanbieter ausgeführt wird.
  • Stellen Sie sicher, dass die Ereignisauflistung aktiviert ist. Durch Ausführen des Befehls nscontrol status können Sie schnell den Status von Instanzkomponenten anzeigen. Falls Ereignisse den Status Disabled oder Enable Pending aufweisen, können Sie keine Ereignisse senden.
    Weitere Informationen zum Anzeigen des Status finden Sie unter Anzeigen des Status von Instanzen, Anwendungen und Komponenten.
    Weitere Informationen zum Aktivieren und Deaktivieren von Komponenten finden Sie unter Aktivieren und Deaktivieren von Instanzen, Anwendungen oder Komponenten.
  • Überprüfen Sie, ob das Konto, das zum Ausführen des Ereignisanbieters verwendet wird, über NSEventProvider-Berechtigungen in den Instanz- und Anwendungsdatenbanken verfügt.

Der FileSystemWatcher-Ereignisanbieter erzeugt einen Fehler

Der FileSystemWatcher-Ereignisanbieter kann einen Fehler erzeugen, wenn die Leistungsindikatoren auf dem Server beschädigt sind. Wenn Sie den folgenden Fehler im Ereignisprotokoll erhalten, ist ein Leistungsindikator beschädigt:

Ereignis-ID: 2980

Ist ein Leistungsindikator beschädigt, gibt der Indikator keine Werte zurück. Gehen Sie wie folgt vor, um zu versuchen, die Beschädigung zu beheben:

  1. Beenden Sie die Instanz, wenn die Instanz ausgeführt wird. Weitere Informationen finden Sie unter Starten und Beenden von Notification Services-Instanzen.
  2. Schließen Sie alle Anwendungen, die die Leistungsindikatoren von Notification Services abfragen, wie z. B. den Systemmonitor.
  3. Registrieren Sie die Instanz neu. Weitere Informationen finden Sie unter Aktualisieren von Registrierungsinformationen.

Auf diese Weise werden die Leistungsindikatoren für die Instanz neu erstellt. Sie müssen diese Schritte möglicherweise mehrere Male ausführen.

Problembehandlung der Generierung und Übermittlung von Benachrichtigungen

Es werden doppelte Benachrichtigungen generiert

Wenn Abonnenten doppelte Benachrichtigungen erhalten, überprüfen Sie, wie Sie Ereignisse auflisten und verwenden:

  • Überprüfen Sie, ob die Benachrichtigungsgenerierungsregeln nicht direkt auf die Benachrichtigungstabelle zugreifen, wenn sie auf eine nach der Benachrichtigungsklasse benannte Ansicht zugreifen sollten. Die Ansicht gibt nur die aktuelle Menge der Ereignisse zurück, wohingegen die Benachrichtigungstabelle alle Ereignisse enthält, die nicht über Vacuumer entfernt worden sind.
    Wenn z. B. der Name einer Ereignisklasse StockEvent lautet, verwenden Sie die StockEvent-Sicht in der Abonnementregel, nicht die NSStockEventEvents-Tabelle.
  • Wenn Sie Ereignisse aus einer anderen Quelle, wie z. B. einem Ereignisverlauf oder einer externen Tabelle, abfragen, muss die Abfrage Logik enthalten, um nur die Daten auszuwählen, die Sie zum Erstellen von Benachrichtigungen verwenden möchten. Beispielsweise können Sie Ereignisse aufnehmen, die in den vorherigen 24 Stunden übermittelt wurden, oder Ereignisse, die einen bestimmten Wert in einer Spalte aufweisen. Anweisungen in den Abonnementregeln können Werte in der Ereignisquelle ändern, sodass Sie die Ereignisverwendung nachverfolgen können.
  • Überprüfen Sie, ob Sie die gleichen Ereignisdaten nicht mehrere Male senden.

Weitere Informationen zum Schreiben von Abonnementregeln finden Sie unter Definieren von Abonnementregeln.

Benachrichtigungen werden nicht generiert oder nicht übermittelt

Wenn Benachrichtigungen nicht aus Ihrer Anwendung gesendet werden, überprüfen Sie Folgendes:

  • Wird das Notification Services-Modul ausgeführt, auf dem die Generatorkomponente ausgeführt wird? Ist es aktiviert?
  • Sind Ereignisse verfügbar?
    Führen Sie die gespeicherte Prozedur NSDiagnosticEventClass in der Instanzdatenbank aus. Schauen Sie in der EventBatchesCollectedCount-Spalte nach, um zu sehen, ob zum erwarteten Zeitpunkt Ereignisse eingetroffen sind.
  • Sind Abonnements vorhanden?
    Verwenden Sie die NSSubscriptionClassNameView-Sicht in der Anwendungsdatenbank, um zu überprüfen, ob die Anwendung über auszuwertende Abonnements verfügt.
  • Sind die geplanten Abonnements richtig geplant?
    Verwenden Sie die NSSubscriptionClassNameView-Sicht in der Anwendungsdatenbank, oder führen Sie die gespeicherten Prozeduren NSScheduledSubscriptionList und NSScheduledSubscriptionDetails in der Anwendungsdatenbank aus, um Abonnementdetails anzuzeigen.
  • Sind die Abonnentengeräte, auf die in den Benachrichtigungen verwiesen wird, vorhanden?
    Sie müssen in den Abonnementregeln eine Abonnenten-ID und einen Abonnentengerätenamen angeben. Der Abonnentengerätename muss mit dem Namen eines für den Abonnenten definierten Abonnentengeräts übereinstimmen. Verwenden Sie NSSubscriberDeviceView in der Instanzdatenbank, um Abonnentengeräte anzuzeigen.
  • Überschreiten Regeln das Zeitlimit?
    Wenn bei Abonnementregeln, die Benachrichtigungen generieren, Timeouts auftreten, generiert die Anwendung keine Benachrichtigungen. Überprüfen Sie, ob die Regeln effizient sind, ob für die Ereignis- und Abonnementdaten die richtigen Indizes definiert sind, ob Vacuumer zum Entfernen alter Daten ausgeführt wird und ob die Regeln nicht durch andere auf dem Server ausgeführte Prozesse blockiert werden. Weitere Informationen zum Entwickeln von Abonnementregeln finden Sie unter Definieren von Abonnementregeln.
  • Werden Benachrichtigungen generiert?
    Führen Sie die gespeicherte Prozedur NSDiagnosticNotificationClass in der Instanzdatenbank aus, um zu überprüfen, ob Benachrichtigungen generiert werden. Suchen Sie in der NotificationsGenerated-Spalte nach dem Intervall, in dem diese Ihres Wissens nach generiert werden. Falls Sie keine Benachrichtigungen finden, kann dies daran liegen, dass keine Ereignisse oder Abonnements vorhanden sind oder dass die Übereinstimmungsregeln der Abonnementklasse keine Benachrichtigungen in die Benachrichtigungsklassenfunktion einfügen. Weitere Informationen zu Regeln finden Sie unter Definieren von Abonnementregeln.
  • Gibt es Fehler bei den Benachrichtigungen?
    Führen Sie die gespeicherte Prozedur NSDiagnosticFailedNotifications aus, um zu überprüfen, ob bei Benachrichtigungen Fehler erzeugt wurden.
  • Gehen die Benachrichtigungen an den richtigen Übermittlungskanal?
    Überprüfen Sie, ob die Anwendung die richtigen Protokolle für die Benachrichtigungsklasse definiert und ob die der Anwendung hinzugefügten Abonnements den richtigen Übermittlungskanal verwenden.
  • Sind die Übermittlungskanäle funktionsfähig?
    Führen Sie den NSDiagnosticDeliveryChannel-Bericht aus, um zu sehen, ob die Übermittlungskanäle funktionsfähig sind.
  • Sind die Verteiler aktiviert?
    Weitere Informationen zum Aktivieren und Deaktivieren von Komponenten finden Sie unter Aktivieren und Deaktivieren von Instanzen, Anwendungen oder Komponenten.

Es kommt zu generischen Fehlern bei der Übermittlung

Bei einigen Übermittlungsfehlern kann es sich tatsächlich um Konfigurationsfehler handeln. Wenn Sie z. B. einen SMTP-Übermittlungskanal falsch konfigurieren und Notification Services versucht, mithilfe dieses Übermittlungskanals eine Benachrichtigung zu übermitteln, erhalten Sie möglicherweise eine Meldung wie diese:

Allgemeiner Benachrichtigungsfehler bei der SMTP-Übertragung

Wenn Sie mehrere solcher Fehler erhalten, überprüfen Sie, ob die Übermittlungskanäle richtig konfiguriert sind. Weitere Informationen finden Sie unter Definieren von Übermittlungskanälen.

Bei der SMTP-Übermittlung wird ein Fehler erzeugt

Wenn Sie das SMTP-Protokoll von Internetinformationsdienste (IIS, Internet Information Services) mit dem lokalen SMTP-Dienst von IIS verwenden, muss Notification Services in einem IIS-Verzeichnis nachschauen, wohin die Benachrichtigungen übermittelt werden sollen. Auf diese Informationen können nur Administratoren zugreifen.

Zur Verwendung des lokalen SMTP-Dienstes von IIS muss das Konto, das zum Ausführen der Verteilermodulkomponente verwendet wird, ein Mitglied der lokalen Gruppe Administratoren sein.

Der Verteiler überschreitet das Zeitlimit

Wenn Sie im Ereignisprotokoll verschiedene Timeoutfehler erhalten, ist möglicherweise die Protokollierungsstufe des Verteilers zu hoch. Dieser Fehler tritt im Allgemeinen nur dann auf, wenn das Datenbanksystem zu große Benachrichtigungsmengen verarbeitet und nicht in der Lage ist, die Verteilungs- und die Protokollierungsaufgaben zu verarbeiten.

Deaktivieren Sie die Protokollierung, um das Problem zu beheben. Weitere Informationen finden Sie unter Angeben von Einstellungen zur Ausführung des Übermittlungsprotokolls.

Problembehandlung beim Vacuumer

Daten werden nicht entfernt, was zu großen Ereignis- und Benachrichtigungstabellen führt

Wenn Daten nicht wie erwartet aus der Anwendungsdatenbank entfernt werden, überprüfen Sie Folgendes:

  • Stellt die Anwendungsdefinition einen Vacuumer-Zeitplan bereit? Weitere Informationen finden Sie unter Konfigurieren der Datenentfernung.
  • Haben Sie ein angemessenes Beibehaltungsalter angegeben? (Je höher das Beibehaltungsalter, desto mehr Daten werden in den Tabellen aufgesammelt.)
  • Wird Vacuumer in einem Zeitraum niedriger Systemaktivität ausgeführt? Falls nicht, verfügt Vacuumer möglicherweise nicht über genügend Systemressourcen, um Daten effizient zu entfernen.
    Beachten Sie, dass die Startzeit ein UTC-Wert ist. Wenn Sie z. B. den Wert 02:00:00 als Startzeit angeben, entspricht dies 2:00 Uhr Greenwich-Zeit. Addieren oder subtrahieren Sie die Differenz zwischen Ihrer Zeitzone und Greenwich-Zeit, um eine Uhrzeit von 2:00 Uhr in Ihrer Zeitzone anzugeben. Beispielsweise liegt die Pazifikzeit 8 Stunden hinter der Greenwich-Zeit. Geben Sie zum Ausführen von Vacuumer um 2:00 Uhr Pazifikzeit die Startzeit 10:00:00 an.
  • Ist die Vacuumer-Dauer ausreichend? Je nach der Menge der Daten müssen Sie Vacuumer möglicherweise länger ausführen.

Verwenden Sie die folgenden Ressourcen, um die Vacuumer-Leistung auszuwerten:

  • Führen Sie die gespeicherte Prozedur NSSnapshotApplications aus, um zu bestimmen, wann Vacuumer zuletzt ausgeführt wurde und wie viele Ereignisse und Benachrichtigungen entfernt wurden. Weitere Informationen finden Sie unter NSSnapshotApplications (Transact-SQL).
  • Überwachen Sie das NS$instanceName: Vacuumer-Leistungsobjekt mithilfe des Windows-Leistungstools. Weitere Informationen finden Sie unter NS$instance_name: Vacuumer-Objekt.

Problembehandlung bei der Webanwendung

Die Abonnementverwaltungsanwendung kann nicht auf die Notification Services-Instanz zugreifen

Die Abonnementverwaltungsanwendung muss in der Lage sein, die Instanz- und Anwendungsdatenbanken zu finden und auf sie zuzugreifen. Hierzu ist es erforderlich, dass die Instanz auf dem Server registriert wird, auf dem die Anwendung ausgeführt wird, und dass das von der Anwendung verwendete Konto der NSSubscriberAdmin-Rolle in den Instanz- und Anwendungsdatenbanken hinzugefügt wird. Weitere Informationen finden Sie unter Bereitstellen einer Schnittstelle der Abonnementverwaltung.

Siehe auch

Aufgaben

Häufig gestellte Fragen (Frequently Asked Questions, FAQs) zu Notification Services
Konfigurieren der Notification Services-Ereignisprotokollierung
Verwenden von Ereignismeldungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005