sp_bindsession (Transact-SQL)
Bindet eine Sitzung oder hebt die Bindung einer Sitzung mit anderen Sitzungen in derselben Instanz vom SQL Server Database Engine (Datenbankmodul) auf. Bei Sitzungsbindungen können zwei oder mehr Sitzungen an derselben Transaktion teilnehmen und freigegebene Sperren verwenden, bis eine ROLLBACK TRANSACTION- oder COMMIT TRANSACTION-Anweisung ausgegeben wird.
Weitere Informationen zu gebundenen Sitzungen finden Sie unter Verwenden von gebundenen Sitzungen.
Wichtig |
---|
Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen Multiple Active Results Sets (MARS) oder verteilte Transaktionen. Weitere Informationen finden Sie unter Verwenden von Multiple Active Result Sets (MARS). oder Verteilte Transaktionen (Datenbankmodul). |
Syntax
sp_bindsession { 'bind_token' | NULL }
Argumente
- 'bind_token'
Das Token, das die Transaktion identifiziert, die ursprünglich mithilfe von sp_getbindtoken oder der Open Data Services-Funktion srv_getbindtoken erhalten wird. bind_token ist vom Datentyp varchar(255).
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
Zwei gebundene Sitzungen verwenden nur eine Transaktion und Sperren gemeinsam. Jede Sitzung behält ihre eigene Isolationsstufe. Das Festlegen einer neuen Isolationsstufe für eine Sitzung hat keine Auswirkungen auf die Isolationsstufe der anderen Sitzung. Jede Sitzung wird weiterhin über ihr Sicherheitskonto identifiziert und kann nur auf die Datenbankressourcen zugreifen, für die dem Konto Berechtigungen erteilt wurden.
sp_bindsession bindet zwei oder mehr vorhandene Clientsitzungen mithilfe eines Bindungstokens. Diese Clientsitzungen müssen zu derselben Instanz vom Database Engine (Datenbankmodul) gehören, von der der Bindungstoken erhalten wurde. Eine Sitzung ist ein Client, der einen Befehl ausführt. Gebundene Datenbanksitzungen verwenden einen Transaktions- und Sperrbereich gemeinsam.
Ein von einer Instanz vom Database Engine (Datenbankmodul) ausgegebenes Bindungstoken kann nicht für eine Clientsitzung mit einer anderen Instanz verwendet werden, auch nicht bei DTC-Transaktionen. Ein Bindungstoken ist nur lokal innerhalb einer Instanz gültig und kann nicht auf mehreren Instanzen freigegeben werden. Sie müssen durch Ausführen von sp_getbindtoken ein anderes Bindungstoken abrufen, um Clientsitzungen auf einer anderen Instanz vom Database Engine (Datenbankmodul) zu binden.
sp_bindsession schlägt fehl und zeigt einen Fehler an, wenn es ein inaktives Token verwendet.
Um eine Bindung aufzuheben, verwenden Sie sp_bindsession ohne die Angabe bind_token, oder übergeben Sie NULL in bind_token.
Berechtigungen
Erfordert die Mitgliedschaft in der public-Rolle.
Beispiele
Im folgenden Beispiel wird das angegebene Bindungstoken an die aktuelle Sitzung gebunden.
Hinweis |
---|
Das Bindungstoken in diesem Beispiel wurde erhalten, indem sp_getbindtoken vor sp_bindsession ausgeführt wurde. |
USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO