sp_bindsession (Transact-SQL)

Gilt für:SQL Server

Bindet oder hebt eine Sitzung an andere Sitzungen in derselben Instanz des SQL Server-Datenbank-Engine. Bindungssitzungen ermöglichen es zwei oder mehr Sitzungen, an derselben Transaktion teilzunehmen und Sperren freizugeben, bis ein ROLLBACK TRANSACTION oder COMMIT TRANSACTION mehrere Sitzungen ausgestellt werden.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen mehrere aktive Resultsets (MARS) oder verteilte Transaktionen. Weitere Informationen finden Sie unter Verwenden mehrerer aktiver Resultsets (MARS) in SQL Server Native Client.

Transact-SQL-Syntaxkonventionen

Syntax

sp_bindsession { 'bind_token' | NULL }

Argumente

"bind_token"

Das Token, das die transaktion identifiziert, die ursprünglich mithilfe sp_getbindtoken oder der Open Data Services-Funktion srv_getbindtoken abgerufen wurde. bind_token ist varchar(255).

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

Zwei gebundene Sitzungen verwenden nur eine Transaktion und Sperren gemeinsam. Jede Sitzung behält ihre eigene Isolationsstufe bei, und das Festlegen einer neuen Isolationsstufe für eine Sitzung wirkt sich nicht auf die Isolationsstufe der anderen Sitzung aus. Jede Standard Sitzung wird von ihrem Sicherheitskonto identifiziert und kann nur auf die Datenbankressourcen zugreifen, für die das Konto die Berechtigung erteilt hat.

sp_bindsession verwendet ein Bindungstoken zum Binden von zwei oder mehr vorhandenen Clientsitzungen. Diese Clientsitzungen müssen sich in derselben Instanz des Datenbank-Engine befinden, aus der das Bindungstoken abgerufen wurde. Eine Sitzung ist ein Client, der einen Befehl ausführt. Gebundene Datenbanksitzungen verwenden einen Transaktions- und Sperrbereich gemeinsam.

Ein Bindungstoken, das von einer Instanz des Datenbank-Engine abgerufen wird, kann nicht für eine Clientsitzung verwendet werden, die mit einer anderen Instanz verbunden ist, auch für DTC-Transaktionen. Ein Bindungstoken ist nur lokal innerhalb jeder Instanz gültig und kann nicht für mehrere Instanzen freigegeben werden. Um Clientsitzungen an eine andere Instanz des Datenbank-Engine zu binden, müssen Sie ein anderes Bindungstoken durch Ausführen sp_getbindtokenabrufen.

sp_bindsession schlägt mit einem Fehler fehl, wenn es ein nicht aktives Token verwendet.

Die Verknüpfung von einer Sitzung wird entweder mithilfe der Verwendung sp_bindsession ohne Angabe von bind_token oder durch Übergeben NULL von bind_token entfernt.

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Beispiele

Im folgenden Beispiel wird das angegebene Bindungstoken an die aktuelle Sitzung gebunden.

Hinweis

Das im Beispiel gezeigte Bindungstoken wurde durch Ausführen sp_getbindtoken vor der Ausführung sp_bindsessionabgerufen.

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO