다음을 통해 공유


sp_releaseapplock(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

sp_releaseapplock
    [ [ @Resource = ] N'Resource' ]
    [ , [ @LockOwner = ] 'LockOwner' ]
    [ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]

인수

[ @Resource = ] N'리소스'

클라이언트 애플리케이션이 지정한 잠금 리소스의 이름입니다. @Resource 기본값NULL인 nvarchar(255)입니다. @Resource 이진 비교되므로 현재 데이터베이스의 데이터 정렬 설정에 관계없이 대/소문자를 구분합니다.

애플리케이션은 리소스가 고유한지 확인해야 합니다. 지정된 이름은 SQL Server 잠금 관리자에 저장할 수 있는 값으로 내부적으로 해시됩니다.

[ @LockOwner = ] 'LockOwner'

잠금이 요청되었을 때 @LockOwner 값인 잠금의 소유자입니다. @LockOwner 기본값Transaction인 varchar(32)입니다. 값은 .일 수도 Session있습니다. @LockOwner 값이 트랜잭션인 경우 기본적으로 또는 명시적으로 sp_getapplock 지정된 트랜잭션 내에서 실행해야 합니다.

[ @DbPrincipal = ] N'DbPrincipal'

데이터베이스의 개체에 대한 권한이 있는 사용자, 역할 또는 애플리케이션 역할입니다. @DbPrincipal 기본값public인 sysname입니다. 함수를 성공적으로 호출하려면 함수의 호출자가 database_principal, dbo 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

반환 코드 값

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

결과
0 잠금이 성공적으로 해제되었습니다.
-999 매개 변수 유효성 검사 또는 다른 호출에서 오류가 발생했음을 나타냅니다.

설명

애플리케이션이 동일한 잠금 리소스 sp_releaseapplock 에 대해 여러 번 호출 sp_getapplock 하는 경우 잠금을 해제하려면 동일한 횟수만큼 호출해야 합니다.

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

사용 권한

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

예제

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

USE AdventureWorks2022;
GO

EXEC sp_getapplock @DbPrincipal = 'dbo',
    @Resource = 'Form1',
    @LockMode = 'Shared';

EXEC sp_releaseapplock @DbPrincipal = 'dbo',
    @Resource = 'Form1';
GO