다음을 통해 공유


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) 사용을 참조하세요.

Transact-SQL 구문 표기 규칙

구문

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