sp_bindsession (Transact-SQL)
적용 대상: SQL Server
SQL Server 데이터베이스 엔진 동일한 인스턴스의 다른 세션에 세션을 바인딩하거나 바인딩 해제합니다. 바인딩 세션을 사용하면 두 개 이상의 세션이 동일한 트랜잭션에 참여하고 a 또는 COMMIT TRANSACTION
발급될 때까지 잠금을 ROLLBACK TRANSACTION
공유할 수 있습니다.
Important
SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. MARS(다중 활성 결과 집합) 또는 분산 트랜잭션을 대신 사용합니다. 자세한 내용은 SQL Server Native Client에서 MARS(Multiple Active Result Sets) 사용을 참조하세요.
구문
sp_bindsession { 'bind_token' | NULL }
인수
'bind_token'
Open Data Services 함수를 사용하여 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