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

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

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

중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다.This feature will 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를 사용 하 여는 sys.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'[ @spid1 = ] 'session ID1'
데이터베이스 엔진Database Engine 세션 ID입니다 sys.dm_exec_sessions 를 사용자가 잠금 정보입니다.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 = ] '세션 ID2'[ @spid2 = ] 'session ID2'
다른 데이터베이스 엔진Database Engine 세션 ID 번호 sys.dm_exec_sessions 잠금을으로 동시에 있을 수 있는 session ID1 열리는데 역시 잠금 정보 및 합니다.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. 세션 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 DescriptionDescription
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-트리 인덱스에 대한 잠금입니다.HBT = Lock on a heap or B-Tree index. 이 정보는 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.
리소스Resource 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 일치는 file_id 열에는 sys.database_files 카탈로그 뷰에 있습니다.fileid matches the file_id column in the sys.database_files catalog view.

키: 내부적으로 사용 되는 16 진수는 데이터베이스 엔진Database Engine합니다.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: 일치 하는 파일의 식별자는 file_id 열에는 sys.database_files 카탈로그 뷰에 있습니다.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:<리소스 문자열의 16 자로 처음 두 ><해시 된 값 >입니다.In the format DbPrincipleId:<first two to 16 characters of the resource string><hashed value>.

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

HBT: 정보가 제공 되지 않습니다.HBT: No information provided. 사용 하 여 sys.dm_tran_locks 동적 관리 뷰를 대신 합니다.Use the sys.dm_tran_locks dynamic management view instead.

오스트레일리아: 정보가 제공 되지 않습니다.AU: No information provided. 사용 하 여 sys.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: 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:

PermissionsPermissions

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

Examples

1.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)
sys.dm_os_tasks (TRANSACT-SQL) sys.dm_os_tasks (Transact-SQL)
sys.dm_os_threads (TRANSACT-SQL)sys.dm_os_threads (Transact-SQL)