Megosztás a következőn keresztül:


sp_getbindtoken (Transact-SQL)

A következőkre vonatkozik:SQL Server

A tranzakció egyedi azonosítót ad vissza. Ez az egyedi azonosító a munkamenetek sp_bindsessionhasználatával történő kötésére szolgáló sztring.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Használjon több aktív eredményhalmazt (MARS) vagy elosztott tranzakciókat. További információ: Több aktív eredményhalmaz (MARS) használata natív SQL Server-ügyfélalkalmazásban.

Transact-SQL szintaxis konvenciói

Szintaxis

sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]

Érvek

Fontos

A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.

[ @out_token = ] 'out_token'

A munkamenetek kötéséhez használandó jogkivonat. @out_tokenvarchar(255), alapértelmezés nélkül.

Kódértékek visszaadása

Egyik sem.

Eredményhalmaz

Egyik sem.

Megjegyzések

sp_getbindtoken csak akkor ad vissza érvényes jogkivonatot, ha a tárolt eljárást egy aktív tranzakcióban hajtja végre. Ellenkező esetben az adatbázismotor hibaüzenetet ad vissza. Például:

-- Declare a variable to hold the bind token.
-- No active transaction.
DECLARE @bind_token AS VARCHAR (255);

-- Trying to get the bind token returns an error 3921.
EXECUTE sp_getbindtoken @bind_token OUTPUT;

Itt van az eredményhalmaz.

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.

Ha sp_getbindtoken egy elosztott tranzakciós kapcsolat nyílt tranzakción belüli beiktatására szolgál, az SQL Server ugyanazt a jogkivonatot adja vissza. Például:

USE AdventureWorks2022;
GO

DECLARE @bind_token AS 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;

Mindkét SELECT utasítás ugyanazt a jogkivonatot adja vissza:

Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--

Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--

A kötési jogkivonat sp_bindsession használható új munkamenetek ugyanahhoz a tranzakcióhoz való kötéséhez. A kötési jogkivonat csak helyileg érvényes az adatbázismotor minden példányán belül, és nem osztható meg több példányon.

Kötési jogkivonat beszerzéséhez és átadásához sp_getbindtoken kell futtatnia, mielőtt végrehajtaná a sp_bindsession ugyanazon zárolási terület megosztásához. Ha kötési jogkivonatot szerez be, sp_bindsession megfelelően fut.

Jegyzet

Javasoljuk, hogy a srv_getbindtoken Open Data Services alkalmazásprogramozási felületével (API) szerezze be a kiterjesztett tárolt eljárásból használandó kötési jogkivonatot.

Engedélyek

A nyilvános szerepkör tagságát igényli.

Példák

Az alábbi példa beolvas egy kötési jogkivonatot, és megjeleníti a kötési jogkivonat nevét.

DECLARE @bind_token AS VARCHAR (255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;

Itt van az eredményhalmaz.

Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ