Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Zwraca unikatowy identyfikator transakcji. Ten unikatowy identyfikator jest ciągiem używanym do wiązania sesji przy użyciu sp_bindsession
.
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_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]
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.
[ @out_token = ] 'out_token'
Token używany do wiązania sesji. @out_token jest varchar(255), bez wartości domyślnej.
Zwracanie wartości kodu
Żaden.
Zestaw wyników
Żaden.
Uwagi
sp_getbindtoken
zwraca prawidłowy token tylko wtedy, gdy procedura składowana jest wykonywana wewnątrz aktywnej transakcji. W przeciwnym razie aparat bazy danych zwraca komunikat o błędzie. Na przykład:
-- Declare a variable to hold the bind token.
-- No active transaction.
DECLARE @bind_token varchar(255);
-- Trying to get the bind token returns an error 3921.
EXECUTE sp_getbindtoken @bind_token OUTPUT;
Oto zestaw wyników.
Server: Msg 3921, Level 16, State 1, Procedure sp_getbindtoken, Line 4
Cannot get a transaction token if there is no transaction active.
Reissue the statement after a transaction has been started.
Gdy sp_getbindtoken
jest używana do rejestracji rozproszonego połączenia transakcji wewnątrz otwartej transakcji, program SQL Server zwraca ten sam token. Na przykład:
USE AdventureWorks2022;
GO
DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token1;
BEGIN DISTRIBUTED TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token2;
--COMMIT TRANSACTION;
--COMMIT TRANSACTION;
Obie instrukcje SELECT
zwracają ten sam token:
Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token powiązania może być używany z sp_bindsession
w celu powiązania nowych sesji z tą samą transakcją. Token powiązania jest prawidłowy tylko lokalnie w każdym wystąpieniu aparatu bazy danych i nie może być współużytkowany w wielu wystąpieniach.
Aby uzyskać i przekazać token powiązania, należy uruchomić sp_getbindtoken
przed wykonaniem sp_bindsession
w celu udostępnienia tego samego miejsca blokady. Jeśli uzyskasz token powiązania, sp_bindsession
działa poprawnie.
Nuta
Zalecamy użycie interfejsu programowania aplikacji (API) usługi srv_getbindtoken Open Data Services w celu uzyskania tokenu powiązania, który ma być używany z rozszerzonej procedury składowanej.
Uprawnienia
Wymaga członkostwa w roli publicznej.
Przykłady
Poniższy przykład uzyskuje token powiązania i wyświetla nazwę powiązanego tokenu.
DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;
Oto zestaw wyników.
Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ