sp_getbindtoken (Transact-SQL)

Si applica a:SQL Server

Restituisce un identificatore univoco per la transazione, ovvero una stringa utilizzata per associare le sessioni tramite sp_bindsession.

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Usare invece più set di risultati attivi (MARS) o transazioni distribuite. Per altre informazioni, vedere Uso di MARS (Multiple Active Result Set).

Convenzioni di sintassi Transact-SQL

Sintassi

  
sp_getbindtoken [@out_token =] 'return_value' OUTPUT   

Argomenti

[@out_token= ]'return_value'
Token da utilizzare per associare le sessioni. return_value è varchar(255) senza impostazione predefinita.

Valori del codice restituito

None

Set di risultati

None

Osservazioni:

sp_getbindtoken restituirà un token valido solo quando la stored procedure viene eseguita all'interno di una transazione attiva. In caso contrario, il motore di database restituirà un messaggio di errore. Ad esempio:

-- 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;  
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.  

Quando sp_getbindtoken viene usato per integrare una connessione di transazione distribuita all'interno di una transazione aperta, SQL Server restituisce lo stesso token. Ad esempio:

USE AdventureWorks2022;  
GO  
DECLARE @bind_token varchar(255);  
  
BEGIN TRAN;  
  
EXECUTE sp_getbindtoken @bind_token OUTPUT;  
SELECT @bind_token AS Token;  
  
BEGIN DISTRIBUTED TRAN;  
  
EXECUTE sp_getbindtoken @bind_token OUTPUT;  
SELECT @bind_token AS Token;  

Entrambe le istruzioni SELECT restituiscono lo stesso token:

Token  
-----  
PKb'gN5<9aGEedk_16>8U=5---/5G=--  
(1 row(s_) affected)  
  
Token  
-----  
PKb'gN5<9aGEedk_16>8U=5---/5G=--  
(1 row(s_) affected)  

È possibile utilizzare il token di associazione con sp_bindsession per associare nuove sessioni alla stessa transazione. Il token di associazione è valido solo in locale all'interno di ogni istanza del motore di database e non può essere condiviso tra più istanze.

Per ottenere e passare un token di associazione, è necessario eseguire sp_getbindtoken prima di eseguire sp_bindsession per la condivisione dello stesso spazio di blocco. Se si ottiene un token di associazione, la stored procedure sp_bindsession viene eseguita correttamente.

Nota

È consigliabile utilizzare l'API ODS srv_getbindtoken per ottenere un token di associazione da utilizzare in una stored procedure estesa.

Autorizzazioni

È richiesta l'appartenenza al ruolo public.

Esempi

Nell'esempio seguente viene recuperato un token di associazione, di cui viene quindi visualizzato il nome.

DECLARE @bind_token varchar(255);  
BEGIN TRAN;  
EXECUTE sp_getbindtoken @bind_token OUTPUT;  
SELECT @bind_token AS Token;  

Questo è il set di risultati.

Token

----------------------------------------------------------

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

Vedi anche

sp_bindsession (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
srv_getbindtoken (API Stored procedure estesa)