sp_getbindtoken (T-SQL)

Berlaku untuk:SQL Server

Mengembalikan pengidentifikasi unik untuk transaksi. Pengidentifikasi unik ini adalah string yang digunakan untuk mengikat sesi menggunakan sp_bindsession.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan Beberapa Set Hasil Aktif (MARS) atau transaksi terdistribusi sebagai gantinya. Untuk informasi selengkapnya, lihat Menggunakan Beberapa Kumpulan Hasil Aktif (MARS).

Konvensi sintaks transact-SQL

Sintaks

  
sp_getbindtoken [@out_token =] 'return_value' OUTPUT   

Argumen

[@out_token= ]'return_value'
Adalah token yang digunakan untuk mengikat sesi. return_value adalah varchar(255) tanpa default.

Mengembalikan Nilai Kode

Tidak

Tataan Hasil

Tidak

Keterangan

sp_getbindtoken akan mengembalikan token yang valid hanya ketika prosedur tersimpan dijalankan di dalam transaksi aktif. Jika tidak, Mesin Database akan mengembalikan pesan kesalahan. Contohnya:

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

Ketika sp_getbindtoken digunakan untuk mendaftarkan koneksi transaksi terdistribusi di dalam transaksi terbuka, SQL Server mengembalikan token yang sama. Contohnya:

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;  

Kedua SELECT pernyataan mengembalikan token yang sama:

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

Token ikatan dapat digunakan dengan sp_bindsession untuk mengikat sesi baru ke transaksi yang sama. Token ikatan hanya valid secara lokal di dalam setiap instans Mesin Database dan tidak dapat dibagikan di beberapa instans.

Untuk mendapatkan dan meneruskan token ikatan, Anda harus menjalankan sp_getbindtoken sebelum menjalankan sp_bindsession untuk berbagi ruang kunci yang sama. Jika Anda mendapatkan token ikatan, sp_bindsession berjalan dengan benar.

Catatan

Kami menyarankan agar Anda menggunakan antarmuka pemrograman aplikasi (API) srv_getbindtoken Open Data Services untuk mendapatkan token ikat yang akan digunakan dari prosedur tersimpan yang diperluas.

Izin

Memerlukan keanggotaan dalam peran publik.

Contoh

Contoh berikut mendapatkan token ikatan dan menampilkan nama token ikat.

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

Berikut adalah hasil yang ditetapkan.

Token

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

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

Lihat Juga

sp_bindsession (T-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
srv_getbindtoken (EXTENDED Stored Procedure API)