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 Set Hasil Aktif (MARS) di SQL Server Native Client.
Sintaks
sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]
Argumen
[ @out_token = ] 'out_token'
Token yang digunakan untuk mengikat sesi. @out_token adalah varchar(255), tanpa default.
Mengembalikan nilai kode
Tidak ada.
Tataan hasil
Tidak ada.
Keterangan
sp_getbindtoken
mengembalikan token yang valid hanya ketika prosedur tersimpan dijalankan di dalam transaksi aktif. Jika tidak, Mesin Database 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;
Berikut set hasilnya.
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 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;
Kedua SELECT
pernyataan mengembalikan token yang sama:
Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token ikat 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
jalankan 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 TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;
Berikut set hasilnya.
Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ