sp_releaseapplock(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

애플리케이션 리소스에 대한 잠금을 해제합니다.

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_ownernvarchar(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 역할의 멤버 자격이 필요합니다.

예제

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

USE AdventureWorks2022;  
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)