sp_getbindtoken (Transact-SQL)
Restituisce un identificatore univoco per la transazione, ovvero una stringa utilizzata per associare le sessioni tramite sp_bindsession.
Importante |
---|
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). |
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