Problembehandlung bei gespeicherten Aktivierungsprozeduren

Gespeicherte Aktivierungsprozeduren werden in einer Hintergrundsitzung ausgeführt. Deshalb unterscheiden sich die Techniken der Problembehandlung bei gespeicherten Aktivierungsprozeduren ein wenig von denen der Problembehandlung von gespeicherten Prozeduren, die Teil einer interaktiven Sitzung sind.

Technik: Anzeigen der Ausgabe von gespeicherten Aktivierungsprozeduren

Datenbankmodul schreibt die Ausgabe einer gespeicherten Aktivierungsprozedur in das SQL Server-Fehlerprotokoll. Wenn die gespeicherte Aktivierungsprozedur zu falschen Ergebnissen führt oder nicht aus der Warteschlange lesen kann, überprüfen Sie das SQL Server-Fehlerprotokoll auf die Ausgabe von der Prozedur. Oft enthält die Ausgabe der gespeicherten Prozedur genügend Informationen, um das Problem zu finden.

Technik: Ausführen der gespeicherten Prozedur von einer interaktiven Sitzung

Eine der besten Möglichkeiten der Problembehandlung bei einer gespeicherten Aktivierungsprozedur besteht darin, die Aktivierung für eine Warteschlange auszuschalten und anschließend die gespeicherte Prozedur von SQL Server Management Studio (oder im Dienstprogramm sqlcmd) auszuführen. Das Ausführen einer gespeicherten Prozedur von einer interaktiven Sitzung ermöglicht es Ihnen, Fehler zu erkennen, die von der gespeicherten Prozedur zurückgegeben werden.

Wenn die gespeicherte Prozedur jedoch durch Datenbankmodul aktiviert wird, können die Datenbankeinstellungen und der Sicherheitskontext anders sein. Vor dem Ausführen der Prozedur verwenden Sie EXECUTE AS, um den Benutzer für die Sitzung als Benutzer festzulegen, der für die Aktivierung angegeben ist, und um die Optionen für die Sitzung auf die Datenbankstandards festzulegen.

Weitere Informationen finden Sie unter Internal Activation Context.

Symptom: Gespeicherte Aktivierungsprozeduren werden nicht ausgeführt

Für dieses Symptom gibt es verschiedene häufige Ursachen.

Die Einstellungen für die Warteschlange wurden möglicherweise geändert. Verwenden Sie die Katalogsicht sys.service_queues, um die Einstellungen für die Warteschlange zu bestätigen. Stellen Sie insbesondere sicher, dass die Aktivierung für die Warteschlange eingeschaltet ist und dass die Warteschlange die richtige gespeicherte Prozedur sowie das richtige Sicherheitsprinzipal angibt. Vergewissern Sie sich, dass das Sicherheitsprinzipal über eine Ausführungsberechtigung für die gespeicherte Prozedur verfügt.

Die gespeicherte Prozedur wird möglicherweise nicht gestartet oder sofort nach dem Start wieder beendet. Überprüfen Sie in diesem Fall das SQL Server-Fehlerprotokoll nach Fehlern aus der gespeicherten Prozedur. Sie können die gespeicherte Prozedur auch von SQL Server Management Studio ausführen und die Ergebnisse überprüfen.

Symptom: Nachrichten bleiben in der Warteschlange

So stellen Sie sicher, dass die gespeicherten Aktivierungsprozeduren richtig gestartet wurden:

  • Überprüfen Sie die dynamische Verwaltungssicht sys.dm_broker_queue_monitors, um sicherzustellen, dass eine Warteschlangenüberwachung für die Warteschlange aktiviert ist. Wenn nicht, ist die Aktivierung für die Warteschlange nicht eingeschaltet. Verwenden Sie die ALTER QUEUE-Anweisung, um die Aktivierung einzuschalten.
  • Der Status der Warteschlangenüberwachung für die Warteschlange sollte RECEIVES_OCCURRING sein. Befindet sich die Warteschlangenüberwachung nicht in diesem Status, überprüfen Sie die dynamische Verwaltungssicht sys.dm_broker_activated_tasks, um sicherzustellen, dass aktivierte Tasks für die Warteschlange aktuell ausgeführt werden. Wenn keine aktivierten Tasks vorhanden sind, treten Fehler bei der Aktivierung auf. Siehe "Symptom: Gespeicherte Aktivierungsprozeduren werden nicht ausgeführt" in diesem Abschnitt.

Wenn aktivierte Tasks zwar ausgeführt werden, Nachrichten jedoch weiterhin in der Warteschlange bleiben, kann der Task nicht empfangen oder kein Commit für die Transaktionen ausführen. Überprüfen Sie das SQL Server-Fehlerprotokoll nach Fehlern aus der gespeicherten Prozedur. Das Beenden der Aktivierung und das manuelle Ausführen der gespeicherten Prozedur können bei der Problembehandlung hilfreich sein.

Siehe auch

Andere Ressourcen

sys.service_queues (Transact-SQL)
sys.dm_broker_queue_monitors
sys.dm_broker_activated_tasks

Hilfe und Informationen

Informationsquellen für SQL Server 2005