Share via


sp_getbindtoken (Transact-SQL)

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

Nota importanteImportante

Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare MARS (Multiple Active Results Sets) o transazioni distribuite. Per ulteriori informazioni, vedere Utilizzo di MARS (Multiple Active Result Set).

Icona di collegamento a un argomento Convenzioni della 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 è di tipo varchar(255) e non prevede alcun valore predefinito.

Valori restituiti

Nessuno

Set di risultati

Nessuno

Osservazioni

sp_getbindtoken restituisce un token valido solo quando la stored procedure viene eseguita all'interno di una transazione attiva. In caso contrario, Motore di database restituisce un 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 utilizzata per integrare una connessione di transazione distribuita all'interno di una transazione aperta, in SQL Server viene restituito lo stesso token. Esempio:

USE AdventureWorks2012;
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 a livello locale in ogni istanza di 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 (Application Programming Interface) ODS (Open Data Services) 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;

Set di risultati:

Token

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

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

Vedere anche

Riferimento

sp_bindsession (Transact-SQL)

Stored procedure di sistema (Transact-SQL)

srv_getbindtoken (API delle stored procedure estese)