sp_bindsession(Transact-SQL)

세션을 같은 SQL Server 데이터베이스 엔진 인스턴스의 다른 세션에 바인딩 또는 바인딩 해제합니다. 세션을 바인딩하면 두 개 이상의 세션이 같은 트랜잭션에 참가할 수 있으며 ROLLBACK TRANSACTION 또는 COMMIT TRANSACTION이 실행될 때까지 잠금을 공유할 수 있습니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 MARS(Multiple Active Results Sets) 또는 분산 트랜잭션을 사용하십시오. 자세한 내용은 MARS(Multiple Active Result Sets) 사용을 참조하십시오.

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

구문

sp_bindsession { 'bind_token' | NULL }

인수

  • ' bind_token '
    sp_getbindtoken 또는 개방형 데이터 서비스인 srv_getbindtoken 함수를 사용하여 처음에 확보된 트랜잭션을 식별하는 토큰입니다. bind_token은 varchar(255)입니다.

반환 코드 값

0(성공) 또는 1(실패)

주의

바인딩된 두 세션은 트랜잭션과 잠금만 공유합니다. 각 세션은 고유한 격리 수준을 유지하며 한 세션에서 새 격리 수준을 설정해도 다른 세션의 격리 수준에는 영향을 주지 않습니다. 각 세션은 보안 계정으로 계속 식별할 수 있으며 해당 계정이 권한을 부여 받은 데이터베이스 리소스에만 액세스할 수 있습니다.

sp_bindsession은 바인딩 토큰을 사용하여 두 개 이상의 기존 클라이언트 세션을 바인딩합니다. 이들 클라이언트 세션은 바인딩 토큰을 확보한 같은 데이터베이스 엔진 인스턴스에 있어야 합니다. 세션은 명령을 실행하는 클라이언트입니다. 바인딩된 데이터베이스 세션은 트랜잭션 및 잠금 공간을 공유합니다.

한 데이터베이스 엔진 인스턴스에서 확보한 바인딩 토큰은 DTC 트랜잭션을 포함해서 다른 인스턴스에 연결된 클라이언트 세션에 사용할 수 없습니다. 바인딩 토큰은 각 인스턴스 내에 로컬로만 유효하며 여러 인스턴스에 걸쳐 공유할 수 없습니다. 다른 데이터베이스 엔진 인스턴스에서 클라이언트 세션을 바인딩하려면 sp_getbindtoken을 실행하여 다른 바인딩 토큰을 확보해야 합니다.

sp_bindsession이 활성화되지 않은 토큰을 사용할 경우 오류가 발생하면서 실패합니다.

세션에서 바인딩을 해제하려면 bind_token을 지정하지 않고 sp_bindsession을 사용하거나 bind_token에 NULL을 전달합니다.

사용 권한

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

다음 예에서는 지정된 바인딩 토큰을 현재 세션에 바인딩합니다.

[!참고]

이 예에서는 sp_bindsession을 실행하기 전에 sp_getbindtoken을 실행하여 바인딩 토큰을 확보했습니다.

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO

참고 항목

참조

sp_getbindtoken(Transact-SQL)

srv_getbindtoken(확장 저장 프로시저 API)

시스템 저장 프로시저(Transact-SQL)