sp_lock(Transact-SQL)sp_lock (Transact-SQL)

적용 대상: 예SQL Server 아니요Azure SQL Database 아니요Azure Synapse Analytics(SQL DW) 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

잠금에 대한 정보를 보고합니다.Reports information about locks.

중요

이 기능은 유지 관리 모드에 있으며, Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. SQL Server 데이터베이스 엔진SQL Server Database Engine의 잠금에 대 한 정보를 얻으려면 dm_tran_locks 동적 관리 뷰를 사용 합니다.To obtain information about locks in the SQL Server 데이터베이스 엔진SQL Server Database Engine, use the sys.dm_tran_locks dynamic management view.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]  
[ ; ]  

인수Arguments

[ @spid1 = ] 'session ID1'은 사용자가 잠금 정보를 필요로 하는 dm_exec_sessions데이터베이스 엔진Database Engine 세션 ID 번호입니다.[ @spid1 = ] 'session ID1' Is a 데이터베이스 엔진Database Engine session ID number from sys.dm_exec_sessions for which the user wants locking information. SESSION ID1int 이며 기본값은 NULL입니다.session ID1 is int with a default value of NULL. Sp_who 를 실행 하 여 세션에 대 한 프로세스 정보를 가져옵니다.Execute sp_who to obtain process information about the session. SESSION ID1 를 지정 하지 않으면 모든 잠금에 대 한 정보가 표시 됩니다.If session ID1 is not specified, information about all locks is displayed.

[ @spid2 = ] 'session ID2'세션 ID1 와 동시에 잠금이 있을 수 있으며 사용자가 정보를 얻고자 하는 dm_exec_sessions의 다른 데이터베이스 엔진Database Engine 세션 ID 번호입니다 .[ @spid2 = ] 'session ID2' Is another 데이터베이스 엔진Database Engine session ID number from sys.dm_exec_sessions that might have a lock at the same time as session ID1 and about which the user also wants information. SESSION ID2int 이며 기본값은 NULL입니다.session ID2 is int with a default value of NULL.

반환 코드 값Return Code Values

0(성공)0 (success)

결과 집합Result Sets

Sp_lock 결과 집합에는 @spid1@spid2 매개 변수에 지정 된 세션이 보유 한 각 잠금에 대 한 행이 하나씩 포함 되어 있습니다.The sp_lock result set contains one row for each lock held by the sessions specified in the @spid1 and @spid2 parameters. @spid1 또는 @spid2 를 모두 지정 하지 않으면 결과 집합은 데이터베이스 엔진Database Engine인스턴스에서 현재 활성 상태인 모든 세션에 대 한 잠금을 보고 합니다.If neither @spid1 nor @spid2 is specified, the result set reports the locks for all sessions currently active in the instance of the 데이터베이스 엔진Database Engine.

열 이름Column name 데이터 형식Data type 설명Description
spidspid smallintsmallint 잠금을 요청하는 프로세스의 데이터베이스 엔진Database Engine 세션 ID입니다.The 데이터베이스 엔진Database Engine session ID number for the process requesting the lock.
dbiddbid smallintsmallint 잠금이 설정된 데이터베이스의 ID입니다.The identification number of the database in which the lock is held. DB_NAME() 함수를 사용하여 데이터베이스를 식별할 수 있습니다.You can use the DB_NAME() function to identify the database.
ObjIdObjId intint 잠금이 설정된 개체의 ID입니다.The identification number of the object on which the lock is held. 관련 데이터베이스에서 OBJECT_NAME() 함수를 사용하여 개체를 식별할 수 있습니다.You can use the OBJECT_NAME() function in the related database to identify the object. 값 99는 특별한 경우로서 데이터베이스에서 페이지 할당을 기록하는 데 사용되는 시스템 페이지 중 하나에 대한 잠금을 나타냅니다.A value of 99 is a special case that indicates a lock on one of the system pages used to record the allocation of pages in a database.
IndIdIndId smallintsmallint 잠금이 설정된 인덱스의 ID입니다.The identification number of the index on which the lock is held.
형식Type nchar(4)nchar(4) 잠금 유형입니다.The lock type:

RID = RID(행 식별자)로 식별되는 테이블의 단일 행에 대한 잠금입니다.RID = Lock on a single row in a table identified by a row identifier (RID).

KEY = 직렬화할 수 있는 트랜잭션에서 키의 범위를 보호하는 인덱스 내의 잠금입니다.KEY = Lock within an index that protects a range of keys in serializable transactions.

PAG = 데이터 또는 인덱스 페이지에 대한 잠금입니다.PAG = Lock on a data or index page.

EXT = 익스텐트에 대한 잠금입니다.EXT = Lock on an extent.

TAB = 모든 데이터와 인덱스가 포함된 전체 테이블에 대한 잠금입니다.TAB = Lock on an entire table, including all data and indexes.

DB = 데이터베이스에 대한 잠금입니다.DB = Lock on a database.

FIL = 데이터베이스 파일에 대한 잠금입니다.FIL = Lock on a database file.

APP = 애플리케이션이 지정한 리소스에 대한 잠금입니다.APP = Lock on an application-specified resource.

MD = 메타데이터 또는 카탈로그 정보에 대한 잠금입니다.MD = Locks on metadata, or catalog information.

HBT = 힙 또는 B-트리의 잠금 (HoBT).HBT = Lock on a heap or B-Tree (HoBT). 이 정보는 SQL ServerSQL Server에서는 완전하지 않습니다.This information is incomplete in SQL ServerSQL Server.

AU = 할당 단위에 대한 잠금입니다.AU = Lock on an allocation unit. 이 정보는 SQL ServerSQL Server에서는 완전하지 않습니다.This information is incomplete in SQL ServerSQL Server.
ResourceResource nchar(32)nchar(32) 잠긴 리소스를 식별하는 값입니다.The value identifying the resource that is locked. 값의 형식은 유형 열에서 식별 되는 리소스 유형에 따라 달라 집니다.The format of the value depends on the type of resource identified in the Type column:

유형 값: 리소스Type Value: Resource Value

RID: fileid: pagenumber: rid 형식의 식별자입니다. 여기서 fileid는 페이지가 포함 된 파일을 식별 하 고 pagenumber는 행이 포함 된 페이지를 식별 하며 rid는 페이지의 특정 행을 식별 합니다.RID: An identifier in the format fileid:pagenumber:rid, where fileid identifies the file containing the page, pagenumber identifies the page containing the row, and rid identifies the specific row on the page. fileid는 database_files 카탈로그 뷰의 file_id 열과 일치 합니다.fileid matches the file_id column in the sys.database_files catalog view.

키: 데이터베이스 엔진Database Engine에서 내부적으로 사용 되는 16 진수입니다.KEY: A hexadecimal number used internally by the 데이터베이스 엔진Database Engine.

PAG: fileid: pagenumber 형식의 숫자입니다. 여기서 fileid는 페이지가 포함 된 파일을 식별 하 고 pagenumber는 페이지를 식별 합니다.PAG: A number in the format fileid:pagenumber, where fileid identifies the file containing the page, and pagenumber identifies the page.

EXT: 익스텐트의 첫 번째 페이지를 식별 하는 번호입니다.EXT: A number identifying the first page in the extent. 이 번호의 형식은 fileid:pagenumber입니다.The number is in the format fileid:pagenumber.

탭: ObjId 열에서 테이블이 이미 식별 되었으므로 정보가 제공 되지 않습니다.TAB: No information provided because the table is already identified in the ObjId column.

DB: dbid 열에서 데이터베이스가 이미 식별 되었으므로 정보가 제공 되지 않았습니다.DB: No information provided because the database is already identified in the dbid column.

FIL: database_files 카탈로그 뷰의 file_id 열과 일치 하는 파일의 식별자입니다.FIL: The identifier of the file, which matches the file_id column in the sys.database_files catalog view.

앱: 잠겨 있는 응용 프로그램 리소스에 고유한 식별자입니다.APP: An identifier unique to the application resource being locked. DbPrincipleId:<형식에서<해시 된 값 > > 리소스 문자열의 처음 2 ~ 16 자입니다.In the format DbPrincipleId:<first two to 16 characters of the resource string><hashed value>.

MD: 리소스 유형에 따라 달라집니다.MD: varies by resource type. 자세한 내용은 (dm_tran_locks transact-sql)resource_description 열에 대 한 설명을 참조 하십시오.For more information, see the description of the resource_description column in sys.dm_tran_locks (Transact-SQL).

HBT: 제공 된 정보가 없습니다.HBT: No information provided. 대신 dm_tran_locks 동적 관리 뷰를 사용 하십시오.Use the sys.dm_tran_locks dynamic management view instead.

AU: 제공 된 정보가 없습니다.AU: No information provided. 대신 dm_tran_locks 동적 관리 뷰를 사용 하십시오.Use the sys.dm_tran_locks dynamic management view instead.
모드Mode nvarchar(8)nvarchar(8) 요청한 잠금 모드입니다.The lock mode requested. 다음 값 중 하나일 수 있습니다.Can be:

NULL = 리소스에 대해 허가된 액세스가 없습니다.NULL = No access is granted to the resource. 자리 표시자 역할을 합니다.Serves as a placeholder.

Sch-S = 스키마 안전성.Sch-S = Schema stability. 특정 세션이 스키마 요소에 대해 스키마 안전성 잠금을 보유하고 있는 동안 테이블 또는 인덱스 등의 스키마 요소가 삭제되지 않도록 합니다.Ensures that a schema element, such as a table or index, is not dropped while any session holds a schema stability lock on the schema element.

Sch-M = 스키마 수정.Sch-M = Schema modification. 지정한 리소스의 스키마를 변경하려는 세션이 보유해야 하는 잠금 모드입니다.Must be held by any session that wants to change the schema of the specified resource. 다른 세션이 표시된 개체를 참조하지 않도록 합니다.Ensures that no other sessions are referencing the indicated object.

S = 공유.S = Shared. 보유 중인 세션이 리소스에 공유된 액세스를 할 수 있도록 권한을 부여합니다.The holding session is granted shared access to the resource.

U = 업데이트.U = Update. 업데이트될 리소스에 대해 업데이트 잠금을 획득하도록 합니다.Indicates an update lock acquired on resources that may eventually be updated. 이후에 업데이트할 가능성을 위해 여러 세션이 리소스를 잠그는 경우 발생하는 일반적인 형태의 교착 상태를 방지하기 위해 사용합니다.It is used to prevent a common form of deadlock that occurs when multiple sessions lock resources for potential update at a later time.

X = 배타.X = Exclusive. 보유 중인 세션이 리소스에 배타적으로 액세스할 수 있도록 권한을 부여합니다.The holding session is granted exclusive access to the resource.

IS = 내재된 공유.IS = Intent Shared. 잠금 계층 구조의 일부 하위 리소스에 S 잠금을 설정하려는 의도를 표시합니다.Indicates the intention to place S locks on some subordinate resource in the lock hierarchy.

IU = 의도 업데이트.IU = Intent Update. 잠금 계층 구조의 일부 하위 리소스에 U 잠금을 설정하려는 의도를 표시합니다.Indicates the intention to place U locks on some subordinate resource in the lock hierarchy.

IX = 의도 배타.IX = Intent Exclusive. 잠금 계층 구조의 일부 하위 리소스에 X 잠금을 설정하려는 의도를 표시합니다.Indicates the intention to place X locks on some subordinate resource in the lock hierarchy.

SIU = 공유 의도 업데이트.SIU = Shared Intent Update. 잠금 계층 구조의 하위 리소스에 대한 업데이트 잠금을 획득하기 위해 리소스에 대한 공유된 액세스를 표시합니다.Indicates shared access to a resource with the intent of acquiring update locks on subordinate resources in the lock hierarchy.

SIX = 공유 의도 배타.SIX = Shared Intent Exclusive. 잠금 계층 구조의 하위 리소스에 대한 배타적 잠금을 획득하기 위해 리소스에 대한 공유된 액세스를 표시합니다.Indicates shared access to a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

UIX = 업데이트 의도 배타.UIX = Update Intent Exclusive. 잠금 계층 구조의 하위 리소스에 대한 배타적 잠금을 획득하기 위해 리소스에 업데이트 잠금을 보유함을 표시합니다.Indicates an update lock hold on a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.

BU = 대량 업데이트.BU = Bulk Update. 대량 작업에 사용합니다.Used by bulk operations.

RangeS_S = 공유 키 범위 및 공유 리소스 잠금.RangeS_S = Shared Key-Range and Shared Resource lock. 직렬화 가능 범위 검색을 표시합니다.Indicates serializable range scan.

RangeS_U = 공유 키 범위 및 업데이트 리소스 잠금.RangeS_U = Shared Key-Range and Update Resource lock. 직렬화 가능 업데이트 검색을 표시합니다.Indicates serializable update scan.

RangeI_N = 삽입 키 범위 및 Null 리소스 잠금.RangeI_N = Insert Key-Range and Null Resource lock. 새 키를 인덱스에 삽입하기 전에 범위를 테스트하는 데 사용됩니다.Used to test ranges before inserting a new key into an index.

RangeI_S = 키 범위 변환 잠금.RangeI_S = Key-Range Conversion lock. RangeI_N 및 S 잠금의 겹침으로 생성됩니다.Created by an overlap of RangeI_N and S locks.

RangeI_U = RangeI_N 및 U 잠금의 겹침으로 생성된 키 범위 변환 잠금.RangeI_U = Key-Range Conversion lock created by an overlap of RangeI_N and U locks.

RangeI_X = RangeI_N 및 X 잠금의 겹침으로 생성된 키 범위 변환 잠금.RangeI_X = Key-Range Conversion lock created by an overlap of RangeI_N and X locks.

RangeI_X_S = RangeI_N 및 RangeS_S 잠금의 겹침으로 생성된 키 범위 변환RangeX_S = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_S. 잠금입니다.locks.

RangeI_X_U = RangeI_N 및 RangeS_U 잠금의 겹침으로 생성된 키 범위 변환 잠금.RangeX_U = Key-Range Conversion lock created by an overlap of RangeI_N and RangeS_U locks.

RangeX_X = 배타 키 범위 및 배타 리소스 잠금.RangeX_X = Exclusive Key-Range and Exclusive Resource lock. 범위 내에서 키를 업데이트할 때 사용되는 변환 잠금입니다.This is a conversion lock used when updating a key in a range.
상태Status nvarchar(5)nvarchar(5) 잠금 요청 상태입니다.The lock request status:

CNVRT: 다른 모드에서 잠금을 변환 중이지만 충돌 하는 모드의 잠금을 보유 하는 다른 프로세스에 의해 변환이 차단 됩니다.CNVRT: The lock is being converted from another mode, but the conversion is blocked by another process holding a lock with a conflicting mode.

GRANT: 잠금을 가져왔습니다.GRANT: The lock was obtained.

대기: 충돌 하는 모드의 잠금을 보유 하는 다른 프로세스에 의해 잠금이 차단 되었습니다.WAIT: The lock is blocked by another process holding a lock with a conflicting mode.

설명Remarks

다음과 같은 방법으로 읽기 작업의 잠금을 제어할 수 있습니다.Users can control the locking of read operations by:

세션과 연결되지 않은 모든 분산 트랜잭션은 분리된 트랜잭션입니다.All distributed transactions not associated with a session are orphaned transactions. 데이터베이스 엔진Database Engine에서는 모든 분리된 트랜잭션에 SPID 값으로 -2를 할당하여 사용자가 차단 분산 트랜잭션을 쉽게 식별하도록 합니다.The 데이터베이스 엔진Database Engine assigns all orphaned distributed transactions the SPID value of -2, which makes it easier for a user to identify blocking distributed transactions. 자세한 내용은 표시된 트랜잭션을 사용하여 관련 데이터베이스를 일관되게 복구(전체 복구 모델)을 참조하세요.For more information, see Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

사용 권한Permissions

VIEW SERVER STATE 권한이 필요합니다.Requires VIEW SERVER STATE permission.

Examples

A.A. 모든 잠금 나열Listing all locks

다음 예에서는 현재 데이터베이스 엔진Database Engine 인스턴스에 보유된 모든 잠금에 대한 정보를 표시합니다.The following example displays information about all locks currently held in an instance of the 데이터베이스 엔진Database Engine.

USE master;  
GO  
EXEC sp_lock;  
GO  

2.B. 단일 서버 프로세스의 잠금 나열Listing a lock from a single-server process

다음 예에서는 프로세스 ID 53에 대해 잠금을 포함한 정보를 표시합니다.The following example displays information, including locks, about process ID 53.

USE master;  
GO  
EXEC sp_lock 53;  
GO  

참고 항목See Also

sys.dm_tran_locks (Transact-SQL) sys.dm_tran_locks (Transact-SQL)
DB_NAME (Transact-SQL) DB_NAME (Transact-SQL)
KILL(Transact-SQL) KILL (Transact-SQL)
OBJECT_NAME(Transact-SQL) OBJECT_NAME (Transact-SQL)
sp_who(Transact-SQL) sp_who (Transact-SQL)
sys.database_files(Transact-SQL) sys.database_files (Transact-SQL)
dm_os_tasks (transact-sql) sys.dm_os_tasks (Transact-SQL)
sys. dm_os_threads (transact-sql)sys.dm_os_threads (Transact-SQL)