sys.dm_tran_locks(Transact-SQL)
SQL Server 2008 R2에서 현재 활성 상태인 잠금 관리자 리소스에 대한 정보를 반환합니다. 각 행은 이미 허용된 잠금 또는 허용 대기 중인 잠금에 대해 현재 활성 상태인 잠금 관리자 요청을 나타냅니다.
결과 집합의 열은 리소스와 요청의 두 기본 그룹으로 나뉩니다. 리소스 그룹은 잠금이 요청된 리소스를 설명하고 요청 그룹은 잠금 요청을 설명합니다.
열 이름 |
데이터 형식 |
설명 |
---|---|---|
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 |
Int |
분할된 잠금 리소스의 잠금 파티션 ID입니다. 분할되지 않은 잠금 리소스의 경우 이 값은 0입니다. |
request_mode |
nvarchar(60) |
요청 모드입니다. 허용된 요청의 경우 허용 모드이고 대기 중인 요청의 경우에는 요청 중인 모드가 됩니다. |
request_type |
nvarchar(60) |
요청 유형입니다. 값은 LOCK입니다. |
request_status |
nvarchar(60) |
이 요청의 현재 상태입니다. 가능한 값은 GRANTED, CONVERT 또는 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 = 트랜잭션 작업 영역 중 배타 부분이 요청을 소유합니다.
참고
참여한 세션에 대해 잠금을 유지하기 위해 작업 공간이 내부적으로 사용됩니다.
|
request_owner_id |
bigint |
이 요청의 특정 소유자 ID입니다. 이 값이 트랜잭션 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_tasks의 resource_address 열과 조인할 수 있습니다. |
사용 권한
서버에 대한 VIEW SERVER 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_type 및 request_owner_id 열에 표시됩니다. 동일한 request_owner_type이 여러 개 있는 경우에는 request_owner_id 열을 사용하여 각 항목을 구분합니다. 분산 트랜잭션에서는 request_owner_type 및 request_owner_guid 열에 다양한 엔터티 정보가 표시됩니다.
예를 들어 세션 S1이 Table1에 대한 공유 잠금을 소유하고 세션 S1에서 실행되는 트랜잭션 T1도 Table1에 대한 공유 잠금을 소유한다고 가정합니다. 이 경우 sys.dm_tran_locks에서 반환되는 resource_description 열에는 두 개의 동일한 리소스가 표시됩니다. request_owner_type 열에서 한 항목은 세션으로 표시되고 다른 항목은 트랜잭션으로 표시됩니다. 또한 resource_owner_id 열의 값도 서로 다릅니다.
한 세션에서 실행되는 여러 커서는 서로 구분되지 않으므로 하나의 엔터티로 간주됩니다.
SQL Server 데이터베이스 엔진에서 사용되는 잠금 유형에 대한 자세한 내용은 데이터베이스 엔진에서의 잠금을 참조하십시오.
세션 ID 값과 연결되지 않은 분산 트랜잭션은 분리된 트랜잭션이며 -2의 세션 ID 값이 할당됩니다. 자세한 내용은 KILL(Transact-SQL)을 참조하십시오.
리소스 정보
다음 표에서는 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에 해당합니다. |
다음 표에서는 각 리소스 유형에 연결된 하위 유형을 나열합니다.
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.CERTIFICATE |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
METADATA.CHILD_INSTANCE |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
METADATA.COMPRESSED_FRAGMENT |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
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 characters>:(<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.CERTIFICATE |
certificate_id = C |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
METADATA.CHILD_INSTANCE |
$hash = H1:H2:H3 |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
METADATA.COMPRESSED_FRAGMENT |
compressed_fragment_id = C |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
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 |
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다. |
예
1. 다른 도구와 함께 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),(2,2),(3,3),(4,4),(5,5),(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.databases의 database_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), partition_id, index_id, partition_number
hobt_id, rows
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
2. 운영 체제 스레드에 세션 정보 연결
다음 예에서는 세션 ID를 Windows 스레드 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