sp_getbindtoken(Transact-SQL)

적용 대상:SQL Server

트랜잭션에 대한 고유 식별자를 반환합니다. 이 고유 식별자는 sp_bindsession 사용하여 세션을 바인딩하는 데 사용되는 문자열입니다.

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. MARS(다중 활성 결과 집합) 또는 분산 트랜잭션을 대신 사용합니다. 자세한 내용은 MARS(Multiple Active Result Sets) 사용을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

  
sp_getbindtoken [@out_token =] 'return_value' OUTPUT   

인수

[@out_token= ]'return_value'
세션을 바인딩하는 데 사용할 토큰입니다. return_value 기본값이 없는 varchar(255)입니다.

반환 코드 값

None

결과 집합

None

설명

sp_getbindtoken 저장 프로시저가 활성 트랜잭션 내에서 실행되는 경우에만 유효한 토큰을 반환합니다. 그렇지 않으면 데이터베이스 엔진 오류 메시지를 반환합니다. 예시:

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

sp_getbindtoken 사용하여 열린 트랜잭션 내에 분산 트랜잭션 연결을 등록하는 경우 SQL Server는 동일한 토큰을 반환합니다. 예시:

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;  

SELECT 문은 다음과 같이 동일한 토큰을 반환합니다.

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

바인딩 토큰을 sp_bindsession 사용하여 새 세션을 동일한 트랜잭션에 바인딩할 수 있습니다. 바인딩 토큰은 데이터베이스 엔진 각 인스턴스 내에서만 로컬로 유효하며 여러 인스턴스에서 공유할 수 없습니다.

바인딩 토큰을 가져오고 전달하려면 동일한 잠금 공간을 공유하기 위해 sp_bindsession 실행하기 전에 sp_getbindtoken 실행해야 합니다. 바인딩 토큰을 가져오는 경우 sp_bindsession 올바르게 실행됩니다.

참고 항목

외부 저장 프로시저에서 사용할 바인드 토큰을 얻는 데는 srv_getbindtoken 개방형 Data Services API(애플리케이션 프로그래밍 인터페이스)를 사용하는 것이 좋습니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

예제

다음 예에서는 바인드 토큰을 가져오고 이름을 표시하는 방법을 보여 줍니다.

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

결과 집합은 다음과 같습니다.

Token

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

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

참고 항목

sp_bindsession(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)
srv_getbindtoken(확장 저장 프로시저 API)