다음을 통해 공유


sp_getbindtoken(Transact-SQL)

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

ms180061.note(ko-kr,SQL.90).gif중요:
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 MARS(Multiple Active Results Sets) 또는 분산 트랜잭션을 사용하십시오. 자세한 내용은 Using Multiple Active Result Sets (MARS) 또는 분산 트랜잭션(데이터베이스 엔진)을 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_getbindtoken [ @out_token = ] 'return_value' OUTPUT 

인수

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

반환 코드 값

없음

결과 집합

없음

주의

SQL Server 2000 이상에서는 해당 저장 프로시저가 활성화된 트랜잭션 내부에서 실행될 경우에만 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.

[!참고] SQL Server 7.0에서는 해당 저장 프로시저가 활성화된 트랜잭션 외부에서 실행된 경우에도 sp_getbindtoken이 유효한 토큰을 반환합니다. 위의 예제는 SQL Server 7.0에서는 작동하지만 SQL Server 2000 이상에서는 작동하지 않습니다.

sp_getbindtoken을 사용하여 열린 트랜잭션 내부에 분산 트랜잭션 연결을 등록할 경우 SQL Server 2000 이상에서 같은 토큰이 반환됩니다. 예를 들면 다음과 같습니다.

USE AdventureWorks;
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 개방형 데이터 서비스 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 (Extended Stored Procedure API)

도움말 및 정보

SQL Server 2005 지원 받기