sp_releaseapplock(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 역할의 멤버 자격이 필요합니다.
예
다음 예에서는 AdventureWorks
데이터베이스의 Form1
리소스에 대해 현재 트랜잭션과 연관된 잠금을 해제합니다.
USE AdventureWorks;
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)