sys.dm_tran_locks(Transact-SQL)

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

SQL Server 현재 활성 잠금 관리자 리소스에 대한 정보를 반환합니다. 각 행은 이미 허용된 잠금 또는 허용 대기 중인 잠금에 대해 현재 활성 상태인 잠금 관리자 요청을 나타냅니다.

결과 집합의 열은 리소스와 요청의 두 기본 그룹으로 나뉩니다. 리소스 그룹은 잠금이 요청된 리소스를 설명하고 요청 그룹은 잠금 요청을 설명합니다.

참고

Azure Synapse Analytics 또는 분석 플랫폼 시스템(PDW)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_tran_locks 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 Description
resource_type nvarchar(60) 리소스 유형을 나타냅니다. 값은 DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT 또는 ALLOCATION_UNIT 중 하나일 수 있습니다.
resource_subtype nvarchar(60) resource_type의 하위 유형을 나타냅니다. 부모 유형의 하위 유형이 아닌 유형을 잠그지 않고 하위 유형 잠금을 획득할 수 있습니다. 개별 하위 유형은 서로 충돌하지 않으며 하위 유형이 아닌 부모 유형과도 충돌하지 않습니다. 모든 리소스 유형에 하위 유형이 있는 것은 아닙니다.
resource_database_id int 이 리소스의 범위를 한정하는 데이터베이스의 ID입니다. 잠금 관리자로 처리되는 모든 리소스의 범위는 데이터베이스 ID로 결정됩니다.
resource_description nvarchar(256) 다른 리소스 열에서 사용할 수 없는 정보만 포함하는 리소스 설명입니다.
resource_associated_entity_id bigint 리소스가 연결된 데이터베이스 내의 엔터티 ID입니다. 리소스 유형에 따라 개체 ID, Hobt ID 또는 할당 단위 ID가 될 수 있습니다.
resource_lock_partition 정수 분할된 잠금 리소스의 잠금 파티션 ID입니다. 분할되지 않은 잠금 리소스의 경우 이 값은 0입니다.
request_mode nvarchar(60) 요청 모드입니다. 허용된 요청의 경우 허용 모드이고 대기 중인 요청의 경우에는 요청 중인 모드가 됩니다.

NULL = 리소스에 대해 허가된 액세스가 없습니다. 자리 표시자 역할을 합니다.

Sch-S(스키마 안정성) = 모든 세션이 스키마 요소에 대한 스키마 안정성 잠금을 보유하는 동안 테이블 또는 인덱스와 같은 스키마 요소가 삭제되지 않도록 합니다.

Sch-M(스키마 수정) = 지정된 리소스의 스키마를 변경하려는 모든 세션에서 개최해야 합니다. 다른 세션이 표시된 개체를 참조하지 않도록 합니다.

S(공유) = 유지 세션에 리소스에 대한 공유 액세스 권한이 부여됩니다.

U(업데이트) = 결국 업데이트될 수 있는 리소스에서 획득한 업데이트 잠금을 나타냅니다. 나중에 업데이트할 경우를 대비해 여러 세션에서 리소스를 잠근 경우 일반적인 교착 상태 발생을 방지하기 위해 사용됩니다.

X(배타적) = 유지 세션에 리소스에 대한 단독 액세스 권한이 부여됩니다.

IS(의도 공유) = 잠금 계층의 일부 하위 리소스에 S 잠금을 배치하려는 의도를 나타냅니다.

IU(의도 업데이트) = 잠금 계층의 일부 하위 리소스에 U 잠금을 배치하려는 의도를 나타냅니다.

IX(의도 배타적) = 잠금 계층의 일부 하위 리소스에 X 잠금을 배치하려는 의도를 나타냅니다.

SIU(공유 의도 업데이트) = 잠금 계층의 하위 리소스에 대한 업데이트 잠금을 획득하려는 의도로 리소스에 대한 공유 액세스를 나타냅니다.

SIX(공유 의도 배타적) = 잠금 계층의 하위 리소스에 대한 배타적 잠금을 획득하려는 의도로 리소스에 대한 공유 액세스를 나타냅니다.

UIX(의도 배타 업데이트) = 잠금 계층의 하위 리소스에 대한 배타적 잠금을 획득하려는 의도로 리소스에 대한 업데이트 잠금 보류를 나타냅니다.

BU = 대량 작업에서 사용됩니다.

RangeS_S(공유 Key-Range 및 공유 리소스 잠금) = 직렬화 가능한 범위 검색을 나타냅니다.

RangeS_U(공유 Key-Range 및 리소스 잠금 업데이트) = 직렬화 가능한 업데이트 검사를 나타냅니다.

RangeI_N(Key-Range 삽입 및 Null 리소스 잠금) = 새 키를 인덱스에 삽입하기 전에 범위를 테스트하는 데 사용됩니다.

RangeI_S = Key-Range 변환 잠금으로, RangeI_N 및 S 잠금이 겹쳐서 생성됩니다.

RangeI_U = RangeI_N 및 U 잠금의 겹침으로 만든 Key-Range 변환 잠금입니다.

RangeI_X = RangeI_N 및 X 잠금의 겹침으로 만든 Key-Range 변환 잠금입니다.

RangeX_S = RangeI_N 및 RangeS_S 겹쳐서 만든 Key-Range 변환 잠금입니다. 잠금입니다.

RangeX_U = RangeI_N 및 RangeS_U 잠금의 겹침으로 만든 Key-Range 변환 잠금입니다.

RangeX_X(전용 Key-Range 및 전용 리소스 잠금) = 범위에서 키를 업데이트할 때 사용되는 변환 잠금입니다.
request_type nvarchar(60) 요청 유형입니다. 값은 LOCK입니다.
request_status nvarchar(60) 이 요청의 현재 상태입니다. 가능한 값은 GRANTED, CONVERT, WAIT, LOW_PRIORITY_CONVERT, LOW_PRIORITY_WAIT 또는 ABORT_BLOCKERS입니다. 낮은 우선 순위 대기 및 중단 차단에 대한 자세한 내용은 ALTER INDEX(Transact-SQL)low_priority_lock_wait 섹션을 참조하세요.
request_reference_count smallint 동일한 요청자가 이 리소스를 요청한 횟수의 근사 값을 반환합니다.
request_lifetime int 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
request_session_id int 현재 이 요청을 소유한 세션 ID입니다. 분산 트랜잭션 및 바운드 트랜잭션의 소유 세션 ID를 변경할 수 있습니다. 값이 -2인 경우 요청이 분리된 분산 트랜잭션에 속함을 나타냅니다. 값이 -3인 경우 성공적으로 롤백할 수 없기 때문에 복구 시 롤백이 지연된 트랜잭션과 같이 지연된 복구 트랜잭션에 요청이 속함을 나타냅니다.
request_exec_context_id int 현재 이 요청을 소유하는 프로세스의 실행 컨텍스트 ID입니다.
request_request_id int 현재 이 요청을 소유하는 프로세스의 요청 ID(일괄 처리 ID)입니다. 이 값은 트랜잭션의 활성 MARS(Multiple Active Result Set) 연결이 변경될 때마다 달라집니다.
request_owner_type nvarchar(60) 요청을 소유하는 엔터티 유형입니다. 다양한 엔터티가 잠금 관리자 요청을 소유할 수 있습니다. 가능한 값은 다음과 같습니다.

TRANSACTION = 트랜잭션이 요청을 소유합니다.

CURSOR = 커서가 요청을 소유합니다.

SESSION = 사용자 세션이 요청을 소유합니다.

SHARED_TRANSACTION_WORKSPACE = 트랜잭션 작업 영역 중 공유 부분이 요청을 소유합니다.

EXCLUSIVE_TRANSACTION_WORKSPACE = 트랜잭션 작업 영역 중 배타 부분이 요청을 소유합니다.

NOTIFICATION_OBJECT = 요청은 내부 SQL Server 구성 요소가 소유합니다. 이 구성 요소는 다른 구성 요소가 잠금을 수행하기 위해 기다리고 있는 경우 잠금 관리자가 이를 알리도록 요청했습니다. FileTable 기능은 이 값을 사용하는 구성 요소입니다.

참고: 작업 공간은 내부적으로 참여 세션에 대한 잠금을 유지하는 데 사용됩니다.
request_owner_id bigint 이 요청의 특정 소유자 ID입니다.

트랜잭션이 요청의 소유자인 경우 이 값에는 트랜잭션 ID가 포함됩니다.

FileTable이 요청의 소유자인 경우request_owner_id 값은 다음 중 하나입니다.
  • -4 : FileTable에서 데이터베이스 잠금을 수행했습니다.
  • -3 : FileTable에서 테이블 잠금을 수행했습니다.
  • 기타 값 : 값은 파일 핸들을 나타냅니다. 이 값은 동적 관리 뷰 sys.dm_filestream_non_transacted_handles(Transact-SQL)에도 fcb_id 표시됩니다.
request_owner_guid uniqueidentifier 이 요청의 특정 소유자 GUID입니다. 이 값이 트랜잭션의 MS DTC GUID와 일치하는 분산 트랜잭션에만 사용됩니다.
request_owner_lockspace_id nvarchar(32) 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. 이 값은 요청자의 잠금 공간 ID를 나타냅니다. 잠금 공간 ID는 두 요청자가 서로 충돌하지 않는지, 그리고 서로 충돌할 수 있는 모드의 경우 두 요청자에게 잠금을 허용할 수 있는지 여부를 결정합니다.
lock_owner_address varbinary(8) 이 요청을 추적하는 데 사용되는 내부 데이터 구조의 메모리 주소입니다. 이 열은 sys.dm_os_waiting_tasksresource_address 열과 조인할 수 있습니다.
pdw_node_id int 적용 대상: Azure Synapse Analytics, 분석 플랫폼 시스템(PDW)

이 배포가 있는 노드의 식별자입니다.

사용 권한

SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE 권한이 필요합니다.

SQL Database Basic, S0S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Azure Active Directory 관리자 계정 또는 ##MS_ServerStateReader##서버 역할 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE 권한 또는 ##MS_ServerStateReader## 서버 역할의 멤버 자격이 필요합니다.

SQL Server 2022 이상에 대한 권한

서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

설명

허용된 요청 상태는 요청자에게 리소스에 대한 잠금이 허용되었음을 나타냅니다. 대기 중인 요청은 해당 요청이 아직 허용되지 않았음을 나타냅니다. request_status 열에서 반환되는 대기 중인 요청 유형은 다음과 같습니다.

  • 변환 요청 상태는 리소스에 대한 요청이 이미 허용되었으며 초기 요청에 대한 업그레이드가 현재 허용 대기 상태에 있음을 나타냅니다.

  • 대기 요청 상태는 리소스에 대한 요청이 아직 허용되지 않았음을 나타냅니다.

sys.dm_tran_locks는 잠금 관리자의 내부 데이터 구조에서 채워지므로 이 정보를 유지하더라도 일반적인 처리 작업에 오버헤드가 추가로 발생하지 않습니다. 뷰를 구체화하려면 잠금 관리자 내부 데이터 구조에 액세스해야 하므로 서버의 정상적인 처리에 사소한 영향을 줄 수 있습니다. 그러나 그 영향은 무시할 만한 수준이며 매우 많이 사용되는 리소스에만 영향을 미칩니다. 이 뷰의 데이터는 잠금 관리자의 현재 상태에 따라 달라지기 때문에 언제든지 변경될 수 있으며 잠금을 획득하고 해제할 때마다 행이 추가되거나 제거됩니다. 이 보기를 쿼리하는 애플리케이션은 잠금 관리자 구조의 무결성을 보호하는 특성으로 인해 예측할 수 없는 성능을 경험할 수 있습니다. 이 뷰에는 기록 정보가 없습니다.

위의 두 요청은 리소스 열과 그룹 열이 모두 같은 경우에만 동일한 리소스에 대해 작동합니다.

다음 도구를 사용하여 읽기 작업의 잠금을 제어할 수 있습니다.

  • SET TRANSACTION ISOLATION LEVEL을 사용하여 세션의 잠금 수준을 지정합니다. 자세한 내용은 SET TRANSACTION ISOLATION LEVEL(Transact-SQL)을 참조하세요.

  • FROM 절에서 테이블 잠금 힌트를 사용하여 테이블의 개별 참조에 대한 잠금 수준을 지정합니다. 구문 및 제한 사항은 테이블 힌트(Transact-SQL)를 참조하세요.

한 세션 ID로 실행되는 리소스에 둘 이상의 잠금을 허용할 수 있습니다. 한 세션에서 실행되는 서로 다른 엔터티는 각각 동일한 리소스에 대한 잠금을 소유할 수 있으며 이 정보는 sys.dm_tran_locks에서 반환되는 request_owner_typerequest_owner_id 열에 표시됩니다. 동일한 request_owner_type이 여러 개 있는 경우에는 request_owner_id 열을 사용하여 각 항목을 구분합니다. 분산 트랜잭션에서는 request_owner_typerequest_owner_guid 열에 다양한 엔터티 정보가 표시됩니다.

예를 들어 세션 S1이 Table1에 대한 공유 잠금을 소유하고 세션 S1에서 실행되는 트랜잭션 T1도 Table1에 대한 공유 잠금을 소유한다고 가정합니다. 이 경우 sys.dm_tran_locks에서 반환되는 resource_description 열에는 두 개의 동일한 리소스가 표시됩니다. request_owner_type 열에서 한 항목은 세션으로 표시되고 다른 항목은 트랜잭션으로 표시됩니다. 또한 resource_owner_id 열의 값도 서로 다릅니다.

한 세션에서 실행되는 여러 커서는 서로 구분되지 않으므로 하나의 엔터티로 간주됩니다.

세션 ID 값과 연결되지 않은 분산 트랜잭션은 분리된 트랜잭션이며 -2의 세션 ID 값이 할당됩니다. 자세한 내용은 KILL(Transact-SQL)을 참조하세요.

잠금

트랜잭션 동안 읽거나 수정한 행과 같은 SQL Server 리소스에는 잠금이 설정되어 다른 트랜잭션에서 동시에 리소스를 사용하는 것을 방지합니다. 예를 들어 트랜잭션에 의해 테이블에 있는 행에 배타적(X) 잠금이 설정되어 있다면 잠금을 풀기 전까지는 다른 트랜잭션으로 수정할 수 없습니다. 잠금을 최소화하면 동시성을 늘려 성능을 향상시킬 수 있습니다.

리소스 정보

다음 표에서는 resource_associated_entity_id 열에 표시되는 리소스를 나열합니다.

리소스 종류 리소스 설명 Resource_associated_entity_id
DATABASE 데이터베이스를 나타냅니다. 해당 없음
FILE 데이터베이스 파일을 나타냅니다. 이 파일은 데이터 또는 로그 파일일 수 있습니다. 해당 없음
OBJECT 데이터베이스 개체를 나타냅니다. 이 개체는 데이터 테이블, 뷰, 저장 프로시저, 확장 저장 프로시저 또는 개체 ID가 있는 모든 개체일 수 있습니다. 개체 ID입니다.
PAGE 데이터 파일 내의 단일 페이지를 나타냅니다. HoBt ID입니다. 이 값은 sys.partitions.hobt_id에 해당합니다. HoBt ID는 호출자가 제공할 수 있는 추가 정보이지만 모든 호출자가 이 정보를 제공할 수 있는 것은 아니기 때문에 PAGE 리소스에 대해 항상 HoBt ID를 사용할 수 있는 것은 아닙니다.
KEY 인덱스의 행을 나타냅니다. HoBt ID입니다. 이 값은 sys.partitions.hobt_id에 해당합니다.
EXTENT 데이터 파일 익스텐트를 나타냅니다. 익스텐트는 8개의 연속 페이지 그룹입니다. 적용할 수 없음
RID 힙의 물리적 행을 나타냅니다. HoBt ID입니다. 이 값은 sys.partitions.hobt_id에 해당합니다. HoBt ID는 호출자가 제공할 수 있는 추가 정보이지만 모든 호출자가 이 정보를 제공할 수 있는 것은 아니기 때문에 RID 리소스에 대해 항상 HoBt ID를 사용할 수 있는 것은 아닙니다.
APPLICATION 애플리케이션이 지정한 리소스를 나타냅니다. 적용할 수 없음
METADATA 메타데이터 정보를 나타냅니다. 적용할 수 없음
HOBT 힙 또는 B-트리를 나타냅니다. 기본 액세스 경로 구조입니다. HoBt ID입니다. 이 값은 sys.partitions.hobt_id에 해당합니다.
ALLOCATION_UNIT 인덱스 파티션과 같은 관련 페이지의 집합을 나타냅니다. 각 할당 단위는 단일 IAM(Index Allocation Map) 체인을 처리합니다. 할당 단위 ID입니다. 이 값은 sys.allocation_units.allocation_unit_id에 해당합니다.

참고

SQL Server 설명서는 인덱스를 지칭할 때 B-트리라는 용어를 사용합니다. rowstore 인덱스에서 SQL Server는 B+ 트리를 구현합니다. 이는 columnstore 인덱스나 메모리 내 데이터 저장소에는 적용되지 않습니다. 자세한 내용은 SQL Server 인덱스 아키텍처 및 디자인 가이드를 검토하세요.

다음 표에서는 각 리소스 유형에 연결된 하위 유형을 나열합니다.

ResourceSubType 동기화
ALLOCATION_UNIT.BULK_OPERATION_PAGE 대량 작업에 사용되는 미리 할당된 페이지를 동기화합니다.
ALLOCATION_UNIT.PAGE_COUNT 지연된 삭제 작업 중 할당 단위 페이지 수 통계를 동기화합니다.
DATABASE.BULKOP_BACKUP_DB 데이터베이스 백업과 대량 작업을 동기화합니다.
DATABASE.BULKOP_BACKUP_LOG 데이터베이스 로그 백업과 대량 작업을 동기화합니다.
DATABASE.CHANGE_TRACKING_CLEANUP 변경 내용 추적 정리 태스크를 동기화합니다
DATABASE.CT_DDL 데이터베이스 및 테이블 수준 변경 내용 추적 DDL 작업을 동기화합니다.
DATABASE.CONVERSATION_PRIORITY CREATE BROKER PRIORITY와 같은 Service Broker 변환 우선 순위 작업을 동기화합니다.
DATABASE.DDL DDL(데이터 정의 언어) 작업을 파일 그룹 작업(예: 삭제)과 동기화합니다.
DATABASE.ENCRYPTION_SCAN TDE 암호화 동기화를 수행합니다.
DATABASE.PLANGUIDE 계획 지침 동기화를 수행합니다.
DATABASE.RESOURCE_GOVERNOR_DDL 리소스 관리자 작업에 대한 DDL 작업(예: ALTER RESOURCE POOL)을 동기화합니다.
DATABASE.SHRINK 데이터베이스 축소 작업을 동기화합니다.
DATABASE.STARTUP 데이터베이스 시작 동기화에 사용합니다.
FILE.SHRINK 파일 축소 작업을 동기화합니다.
HOBT.BULK_OPERATION 힙 최적화 대량 로드 작업과 동시 검색을 동기화합니다. 이 작업은 행 버전 관리를 사용한 스냅샷, 커밋되지 않은 읽기 및 커밋된 읽기의 격리 수준에서 수행됩니다.
HOBT.INDEX_REORGANIZE 힙 또는 인덱스 재구성 작업을 동기화합니다.
OBJECT.COMPILE 저장 프로시저 컴파일을 동기화합니다.
OBJECT.INDEX_OPERATION 인덱스 작업을 동기화합니다.
OBJECT.UPDSTATS 테이블의 통계 업데이트를 동기화합니다.
METADATA.ASSEMBLY 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASSEMBLY_CLR_NAME 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASSEMBLY_TOKEN 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASYMMETRIC_KEY 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT_ACTIONS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT_SPECIFICATION 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AVAILABILITY_GROUP 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CERTIFICATE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CHILD_INSTANCE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.COMPRESSED_FRAGMENT 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.COMPRESSED_ROWSET 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSTATION_ENDPOINT_RECV 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSTATION_ENDPOINT_SEND 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSATION_GROUP 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSATION_PRIORITY 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CREDENTIAL 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CRYPTOGRAPHIC_PROVIDER 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATA_SPACE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATABASE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATABASE_PRINCIPAL 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_MIRRORING_SESSION 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_MIRRORING_WITNESS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_PRINCIPAL_SID 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ENDPOINT 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ENDPOINT_WEBMETHOD 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.EXPR_COLUMN 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.EXPR_HASH 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_CATALOG 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_INDEX 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_STOPLIST 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INDEX_EXTENSION_SCHEME 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INDEXSTATS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INSTANTIATED_TYPE_HASH 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.MESSAGE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.METADATA_CACHE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PARTITION_FUNCTION 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PASSWORD_POLICY 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PERMISSIONS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PLAN_GUIDE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PLAN_GUIDE_HASH 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PLAN_GUIDE_SCOPE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.QNAME 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.QNAME_HASH 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.REMOTE_SERVICE_BINDING 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ROUTE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SCHEMA 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SECURITY_CACHE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SECURITY_DESCRIPTOR 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SEQUENCE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVER_EVENT_SESSIONS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVER_PRINCIPAL 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_BROKER_GUID 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_CONTRACT 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_MESSAGE_TYPE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.STATS 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SYMMETRIC_KEY 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.USER_TYPE 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_COLLECTION 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_COMPONENT 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_INDEX_QNAME 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

다음 표에서는 각 리소스 유형에 대한 resource_description 열의 형식을 제공합니다.

리소스 형식 설명
DATABASE 적용할 수 없음 이미 resource_database_id 열에서 사용할 수 있는 데이터베이스 ID입니다.
FILE <file_id> 이 리소스가 나타내는 파일의 ID입니다.
OBJECT <object_id> 이 리소스가 나타내는 개체의 ID입니다. 테이블뿐만 아니라 sys.objects에 나열된 모든 개체일 수 있습니다.
PAGE <>file_id:<page_in_file> 이 리소스가 나타내는 페이지의 파일 및 페이지 ID를 나타냅니다.
KEY <hash_value> 이 리소스가 나타내는 행에서 키 열의 해시를 나타냅니다.
EXTENT <>file_id:<page_in_files> 이 리소스가 나타내는 익스텐트의 파일 및 페이지 ID를 나타냅니다. 익스텐트 ID는 익스텐트에서 첫 페이지의 페이지 ID와 같습니다.
RID <>file_id:<page_in_file>:<row_on_page> 이 리소스가 나타내는 행의 페이지 ID와 행 ID를 나타냅니다. 연결된 개체 ID가 99인 경우 이 리소스는 IAM 체인의 첫 IAM 페이지에 있는 8개의 혼합 페이지 슬롯 중 하나를 나타냅니다.
APPLICATION <DbPrincipalId>:<upto 32자>:(<hash_value>) 이 애플리케이션 잠금 리소스의 범위를 한정하는 데 사용된 데이터베이스 보안 주체의 ID를 나타냅니다. 또한 이 애플리케이션 잠금 리소스에 해당하는 리소스 문자열에서 최대 32자까지 포함합니다. 전체 문자열을 사용할 수 없어 두 문자만 표시되는 경우도 있습니다. 이 동작은 복구 과정에서 다시 획득한 애플리케이션 잠금에 대한 데이터베이스 복구 시에만 수행됩니다. 해시 값은 이 애플리케이션 잠금 리소스에 해당하는 전체 리소스 문자열의 해시를 나타냅니다.
HOBT 적용할 수 없음 HoBt ID는 resource_associated_entity_id로 포함된 ID입니다.
ALLOCATION_UNIT 해당 없음 할당 단위 ID는 resource_associated_entity_id로 포함된 ID입니다.
METADATA.ASSEMBLY assembly_id = A 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASSEMBLY_CLR_NAME $qname_id = Q 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASSEMBLY_TOKEN assembly_id = A, $token_id 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ASSYMMETRIC_KEY asymmetric_key_id = A 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT audit_id = A 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT_ACTIONS device_id = D, major_id = M 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AUDIT_SPECIFICATION audit_specification_id = A 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.AVAILABILITY_GROUP availability_group_id = A 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CERTIFICATE certificate_id = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CHILD_INSTANCE $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.COMPRESSED_FRAGMENT object_id = O , compressed_fragment_id = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.COMPRESSED_ROW object_id = O 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSTATION_ENDPOINT_RECV $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSTATION_ENDPOINT_SEND $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSATION_GROUP $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CONVERSATION_PRIORITY conversation_priority_id = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CREDENTIAL credential_id = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.CRYPTOGRAPHIC_PROVIDER provider_id = P 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATA_SPACE data_space_id = D 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATABASE database_id = D 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DATABASE_PRINCIPAL principal_id = P 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_MIRRORING_SESSION database_id = D 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_MIRRORING_WITNESS $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.DB_PRINCIPAL_SID $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ENDPOINT endpoint_id = E 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ENDPOINT_WEBMETHOD $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_INDEX object_id = O 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.EXPR_COLUMN object_id = O, column_id = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.EXPR_HASH object_id = O, $hash = H 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_INDEX object_id = O 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.FULLTEXT_STOPLIST fulltext_stoplist_id = F 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INDEX_EXTENSION_SCHEME index_extension_id = I 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INDEXSTATS object_id = O, index_id or stats_id = I 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.INSTANTIATED_TYPE_HASH user_type_id = U, hash = H 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.MESSAGE message_id = M 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.METADATA_CACHE $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PARTITION_FUNCTION function_id = F 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PASSWORD_POLICY principal_id = P 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PERMISSIONS class = C 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.PLAN_GUIDE plan_guide_id = P 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA. PLAN_GUIDE_HASH $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA. PLAN_GUIDE_SCOPE scope_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.QNAME $qname_id = Q 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.QNAME_HASH $qname_scope_id = Q, $qname_hash = H 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.REMOTE_SERVICE_BINDING remote_service_binding_id = R 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.ROUTE route_id = R 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SCHEMA schema_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SECURITY_CACHE $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SECURITY_DESCRIPTOR sd_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SEQUENCE $seq_type = S, object_id = O 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVER server_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVER_EVENT_SESSIONS event_session_id = E 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVER_PRINCIPAL principal_id = P 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE service_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_BROKER_GUID $hash = H1:H2:H3 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_CONTRACT service_contract_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SERVICE_MESSAGE_TYPE message_type_id = M 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.STATS object_id = O, stats_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.SYMMETRIC_KEY symmetric_key_id = S 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.USER_TYPE user_type_id = U 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_COLLECTION xml_collection_id = X 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_COMPONENT xml_component_id = X 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
METADATA.XML_INDEX_QNAME object_id = O, $qname_id = Q 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

다음 XEvents는 파티션 SWITCH 및 온라인 인덱스 다시 작성과 관련이 있습니다. 구문에 대한 자세한 내용은 ALTER TABLE(Transact-SQL)ALTER INDEX(Transact-SQL)를 참조하세요.

  • lock_request_priority_state

  • process_killed_by_abort_blockers

  • ddl_with_wait_at_low_priority

온라인 인덱스 작업에 대한 기존 XEvent progress_report_online_index_operationpartition_numberpartition_id 추가하여 확장되었습니다.

예제

A. 다른 도구와 함께 sys.dm_tran_locks 사용

다음 예에는 다른 트랜잭션에 의해 업데이트 작업이 차단되는 시나리오에서 실행됩니다. sys.dm_tran_locks와 다른 도구를 사용하여 리소스 잠금에 대한 정보를 제공합니다.

USE tempdb;  
GO  
  
-- Create test table and index.  
CREATE TABLE t_lock  
    (  
    c1 int, c2 int  
    );  
GO  
  
CREATE INDEX t_lock_ci on t_lock(c1);  
GO  
  
-- Insert values into test table  
INSERT INTO t_lock VALUES (1, 1);  
INSERT INTO t_lock VALUES (2,2);  
INSERT INTO t_lock VALUES (3,3);  
INSERT INTO t_lock VALUES (4,4);  
INSERT INTO t_lock VALUES (5,5);  
INSERT INTO t_lock VALUES (6,6);  
GO  
  
-- Session 1  
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;  
  
BEGIN TRAN  
    SELECT c1  
        FROM t_lock  
        WITH(holdlock, rowlock);  
  
-- Session 2  
BEGIN TRAN  
    UPDATE t_lock SET c1 = 10  

다음 쿼리에서는 잠금 정보를 표시합니다. <dbid> 값을 sys.databasesdatabase_id로 대체해야 합니다.

SELECT resource_type, resource_associated_entity_id,  
    request_status, request_mode,request_session_id,  
    resource_description   
    FROM sys.dm_tran_locks  
    WHERE resource_database_id = <dbid>  

다음 쿼리에서는 위 쿼리의 resource_associated_entity_id를 사용하여 개체 정보를 반환합니다. 해당 개체가 포함된 데이터베이스에 연결되어 있는 동안 이 쿼리를 실행해야 합니다.

SELECT object_name(object_id), *  
    FROM sys.partitions  
    WHERE hobt_id=<resource_associated_entity_id>  

다음 쿼리에서는 차단 정보를 표시합니다.

SELECT   
        t1.resource_type,  
        t1.resource_database_id,  
        t1.resource_associated_entity_id,  
        t1.request_mode,  
        t1.request_session_id,  
        t2.blocking_session_id  
    FROM sys.dm_tran_locks as t1  
    INNER JOIN sys.dm_os_waiting_tasks as t2  
        ON t1.lock_owner_address = t2.resource_address;  

트랜잭션을 롤백하여 리소스를 해제합니다.

-- Session 1  
ROLLBACK;  
GO  
  
-- Session 2  
ROLLBACK;  
GO  

B. 운영 체제 스레드에 세션 정보 연결

다음 예에서는 Windows 스레드 ID와 세션 ID를 연결하는 정보를 반환합니다. 스레드 성능은 Windows 성능 모니터에서 모니터링할 수 있습니다. 이 쿼리는 현재 중지 중인 세션 ID를 반환하지 않습니다.

SELECT STasks.session_id, SThreads.os_thread_id  
    FROM sys.dm_os_tasks AS STasks  
    INNER JOIN sys.dm_os_threads AS SThreads  
        ON STasks.worker_address = SThreads.worker_address  
    WHERE STasks.session_id IS NOT NULL  
    ORDER BY STasks.session_id;  
GO  

참고 항목

sys.dm_tran_database_transactions(Transact-SQL)
동적 관리 뷰 및 함수(Transact-SQL)
트랜잭션 관련 동적 관리 뷰 및 함수(Transact-SQL)
SQL Server, Locks 개체