Udostępnij za pośrednictwem


sp_bindsession (Transact-SQL)

Dotyczy:programu SQL Server

Tworzy powiązanie sesji z innymi sesjami w tym samym wystąpieniu aparatu bazy danych programu SQL Server. Sesje powiązań umożliwiają co najmniej dwie sesje uczestnictwa w tej samej transakcji i udostępnianie blokad do momentu wystawienia ROLLBACK TRANSACTION lub COMMIT TRANSACTION.

Ważny

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj wielu aktywnych zestawów wyników (MARS) lub transakcji rozproszonych. Aby uzyskać więcej informacji, zobacz Using Multiple Active Result Sets (MARS) in SQL Server Native Client.

Transact-SQL konwencje składni

Składnia

sp_bindsession { 'bind_token' | NULL }

Argumenty

Ważny

Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.

'bind_token'

Token, który identyfikuje transakcję pierwotnie uzyskaną przy użyciu sp_getbindtoken lub funkcji open data services srv_getbindtoken. bind_token jest varchar(255).

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Uwagi

Dwie sesje, które są powiązane, współużytkują tylko transakcję i blokady. Każda sesja zachowuje własny poziom izolacji, a ustawienie nowego poziomu izolacji w jednej sesji nie wpływa na poziom izolacji drugiej sesji. Każda sesja pozostaje identyfikowana przez konto zabezpieczeń i może uzyskiwać dostęp tylko do zasobów bazy danych, do których udzielono uprawnień konta.

sp_bindsession używa tokenu powiązania w celu powiązania co najmniej dwóch istniejących sesji klienta. Te sesje klienta muszą znajdować się w tym samym wystąpieniu aparatu bazy danych, z którego uzyskano token powiązania. Sesja to klient wykonujący polecenie. Powiązane sesje bazy danych współużytkuje transakcję i blokuje miejsce.

Token powiązania uzyskany z jednego wystąpienia aparatu bazy danych nie może być używany dla sesji klienta połączonej z innym wystąpieniem, nawet w przypadku transakcji DTC. Token powiązania jest prawidłowy tylko lokalnie w każdym wystąpieniu i nie może być współużytkowany w wielu wystąpieniach. Aby powiązać sesje klienta w innym wystąpieniu aparatu bazy danych, należy uzyskać inny token powiązania, wykonując sp_getbindtoken.

sp_bindsession kończy się niepowodzeniem z powodu błędu, jeśli używa tokenu, który nie jest aktywny.

Usuń powiązanie z sesji przy użyciu sp_bindsession bez określania bind_token lub przez przekazanie NULL w bind_token.

Uprawnienia

Wymaga członkostwa w roli publicznej.

Przykłady

Poniższy przykład wiąże określony token powiązania z bieżącą sesją.

Nuta

Token powiązania pokazany w przykładzie został uzyskany przez wykonanie sp_getbindtoken przed wykonaniem sp_bindsession.

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