sp_releaseapplock(Transact-SQL)

응용 프로그램 리소스에서 잠금을 해제합니다.

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

구문

sp_releaseapplock [ @Resource = ] 'resource_name' 
     [ , [ @LockOwner = ] 'lock_owner' ]
     [ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]

인수

  • [ @Resource= ] 'resource_name'
    클라이언트 응용 프로그램이 지정한 잠금 리소스의 이름입니다. 응용 프로그램은 리소스가 고유한지 확인해야 합니다. 지정된 이름은 SQL Server 잠금 관리자에 저장할 수 있는 값으로 내부적으로 해시됩니다. resource_name은 nvarchar(255)이며 기본값은 없습니다. resource_name은 이진 비교되므로 현재 데이터베이스의 데이터 정렬 설정에 관계없이 대/소문자를 구분합니다.

  • [ @LockOwner= ] 'lock_owner'
    잠금의 소유자이며 잠금이 요청될 때 lock_owner 값입니다. lock_owner는 nvarchar(32)입니다. 값은 Transaction(기본값) 또는 Session일 수 있습니다. lock_owner 값이 기본적으로 Transaction이거나 명시적으로 이와 같이 지정되면 sp_getapplock은 트랜잭션 내에서 실행되어야 합니다.

  • [ @DbPrincipal= ] 'database_principal'
    데이터베이스의 개체에 대한 사용 권한이 있는 사용자, 역할 또는 응용 프로그램 역할입니다. 함수를 성공적으로 호출하려면 이 함수의 호출자가 database_principal, dbo 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다. 기본값은 public입니다.

반환 코드 값

>= 0(성공) 또는 < 0(실패)

결과

0

잠금이 성공적으로 해제되었습니다.

-999

매개 변수 유효성 검사 또는 다른 호출에서 오류가 발생했음을 나타냅니다.

주의

응용 프로그램이 동일한 잠금 리소스에 대해 sp_getapplock을 여러 번 호출한 경우에는 잠금을 해제하는 데도 동일한 횟수만큼 sp_releaseapplock을 호출해야 합니다.

어떤 이유로든 서버가 종료되면 잠금은 해제됩니다.

사용 권한

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

다음 예에서는 AdventureWorks2012 데이터베이스의 Form1 리소스에 대해 현재 트랜잭션과 연관된 잠금을 해제합니다.

USE AdventureWorks2012;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1', 
     @LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO

참고 항목

참조

APPLOCK_MODE(Transact-SQL)

APPLOCK_TEST(Transact-SQL)

sp_getapplock(Transact-SQL)