Bagikan melalui


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.

Konvensi sintaks transact-SQL

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