Kontext der internen Aktivierung

In diesem Thema wird der Ausführungskontext für eine gespeicherte Prozedur beschrieben, die durch interne Aktivierung gestartet wird.

Sicherheitskontext

Eine für die Aktivierung konfigurierte Warteschlange muss auch den Benutzer angeben, unter dessen Namen die gespeicherte Aktivierungsprozedur ausgeführt wird. SQL Server nimmt die Identität dieses Benutzers an, bevor die gespeicherte Prozedur gestartet wird.

Wenn die gespeicherte Prozedur auch eine EXECUTE AS-Klausel angibt, finden zwei Identitätswechsel statt. SQL Server nimmt zunächst die Identität des für die Warteschlange angegebenen Benutzers an und führt dann die gespeicherte Prozedur aus. Bei der Ausführung der gespeicherten Prozedur nimmt diese die Identität des Benutzers an, der in der EXECUTE AS-Klausel der Prozedur angegeben ist.

Der für eine Remotedienstbindung angegebene Benutzer ist im Allgemeinen nicht mit dem für die Aktivierung angegebenen Benutzer identisch. Auch die erforderlichen Berechtigungen unterscheiden sich für jeden Benutzer. Der Benutzer der Remotedienstbindung benötigt keine Berechtigung zum Auslesen der Warteschlange oder zum Ausführen gespeicherter Prozeduren in der Datenbank, und der für die Aktivierung angegebene Benutzer benötigt keine Berechtigung zum Senden von Nachrichten an den Dienst. Weitere Informationen zu Benutzerberechtigungen finden Sie unter Identität und Zugriffssteuerung (Service Broker) und Service Broker-Dialogsicherheit.

Sitzungseinstellungen

Service Broker führt intern aktivierte Dienstprogramme für eine Hintergrundsitzung getrennt von der Verbindung aus, die die Nachricht erstellt hat. Bei den für diese Sitzung festgelegten Optionen handelt es sich um die Standardoptionen für die Datenbank.

SQL Server schreibt in einer von Service Broker gestarteten Sitzung die Ausgabe von PRINT-Anweisungen und RAISERROR-Anweisungen in das SQL Server-Fehlerprotokoll. Service Broker stellt keine Parameter für eine aktivierte gespeicherte Prozedur bereit. Ferner berücksichtigt Service Broker keine Rückgabewerte aus einer aktivierten gespeicherten Prozedur und verarbeitet keine Resultsets aus einer aktivierten gespeicherten Prozedur.

Transaktionskontext

Eine aktivierte gespeicherte Prozedur ist für die Verwaltung von Transaktionen zuständig. SQL Server startet eine Transaktion erst, nachdem die gespeicherte Prozedur aktiviert wurde. Die gespeicherte Prozedur wird in einem anderen Transaktionskontext ausgeführt als der interne Vorgang, der die Prozedur aktiviert. Eine Erläuterung zur Verwaltung von Transaktionen in aktivierten gespeicherten Prozeduren finden Sie unter Transaktionales Messaging.

Fehlererkennung

Eine aktivierte gespeicherte Prozedur muss Nachrichten aus der Warteschlange empfangen, die die Prozedur aktiviert hat. Wenn die gespeicherte Prozedur beendet wird, ohne Nachrichten zu empfangen, oder wenn die Warteschlangenüberwachung ermittelt, dass die gespeicherte Prozedur nach einem kurzen Timeout keine Nachrichten empfängt, wird die gespeicherte Prozedur von der Warteschlangenüberwachung als fehlgeschlagen eingestuft. In diesem Fall beendet die Warteschlangenüberwachung die Aktivierung der gespeicherten Prozedur.