适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric
中的仓库Microsoft Fabric 中的 SQL 数据库
返回 SQL Server 中有关当前活动的锁管理器资源的信息。 向锁管理器发出的已授予锁或正等待授予锁的每个当前活动请求分别对应一行。
结果集中的列大体分为两组:资源组和请求组。 资源组说明正在进行锁请求的资源,请求组说明锁请求。
注意
若要从 Azure Synapse Analytics 或 Analytics 平台系统(PDW)调用此名称,请使用名称 sys.dm_pdw_nodes_tran_locks。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
| 列名称 | 数据类型 | 描述 |
|---|---|---|
resource_type |
nvarchar(60) | 表示资源类型。 该值可以是:DATABASEFILEOBJECTPAGEKEYEXTENTRID (行编号)APPLICATIONMETADATAHOBT (堆栈或B树)ALLOCATION_UNITXACT (交易)OIB (在线索引构建)ROW_GROUP |
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) | 请求的模式。 对于已授予的请求,为已授予模式;对于等待请求,为正在请求的模式。 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 和空资源锁)= 用于在将新密钥插入索引前测试范围。RangeI_S= Key-Range 转换锁,由和S锁重叠RangeI_N生成。RangeI_U = Key-Range 转换锁,由RangeI_N锁和U锁重叠形成。RangeI_X= Key-Range 转换锁,由和X锁重叠RangeI_N生成。RangeX_S = Key-Range 转换锁,由 和 RangeI_NRangeS_S的重叠形成。 。RangeX_U= Key-Range 转换锁,由和RangeS_U锁重叠RangeI_N生成。RangeX_X (异 Key-Range 锁和独占资源锁)= 这是一种用于更新某个区间密钥的转换锁。 |
request_type |
nvarchar(60) | 请求类型。 该值为 LOCK。 |
request_status |
nvarchar(60) | 该请求的当前状态。 可能的值为 GRANTED、CONVERT、WAIT、LOW_PRIORITY_CONVERT、LOW_PRIORITY_WAIT 或 ABORT_BLOCKERS。 有关低优先级等待和中止阻断的更多信息,请参见(Transact-SQL)low_priority_lock_waitALTER INDEX部分。 |
request_reference_count |
smallint | 返回同一请求程序已请求该资源的近似次数。 |
request_lifetime |
int | 标识为仅供参考。 不支持。 不保证以后的兼容性。 |
request_session_id |
int |
session_id 当前拥有此请求。 拥有 session_id 可以更改分布式和绑定事务。 指示请求属于孤立分布式事务的值 -2 。 一个值 -3 表示请求属于延迟恢复事务,例如,由于无法成功完成回滚,因此在恢复时回滚已延迟的事务。 |
request_exec_context_id |
int | 当前拥有该请求的进程的执行上下文 ID。 |
request_request_id |
int |
request_id (批处理 ID)当前拥有此请求的进程。 每当事务的活跃 多重激活结果集(MARS) 连接发生变化时,该值都会变化。 |
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 具有以下值之一:
|
request_owner_guid |
uniqueidentifier | 此请求的特定所有者的 GUID。 该值仅供分布式事务使用,在该事务中,该值与事务的 MS DTC GUID 相对应。 |
request_owner_lockspace_id |
nvarchar(32) | 标识为仅供参考。 不支持。 不保证以后的兼容性。 该值表示请求程序的锁空间 ID。 锁空间 ID 确定两个请求程序是否相互兼容以及在两者冲突的模式下是否可以向其授予锁。 |
lock_owner_address |
varbinary(8) | 用于跟踪该请求的内部数据结构的内存地址。 可以将此列与列联接 resource_address 在一 sys.dm_os_waiting_tasks起。 |
pdw_node_id |
int | 此分发所在节点的标识符。 适用于:Azure Synapse Analytics、Analytics Platform System (PDW) |
权限
在 SQL Server 和 SQL 托管实例 上,需要 sys.dm_tran_locksVIEW SERVER STATE权限。
在 SQL 数据库“基本”、“S0”和“S1”服务目标中,对于“弹性池”中的数据库,服务器管理员帐户、Microsoft Entra 管理员帐户或 ##MS_ServerStateReader##服务器角色中的成员身份为必填项。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。
在 Microsoft Fabric 的 SQL 分析端点和仓库中,查看器工作区角色的成员身份是查看 sys.dm_tran_locks的最低权限。
SQL Server 2022 及更高版本的权限
在 SQL Server 2022 及以后版本中,需要 sys.dm_tran_locksVIEW SERVER PERFORMANCE STATE服务器权限。
备注
已授予请求状态指示已将资源上的锁授予请求程序。 等待请求指示尚未授予请求。 列返回 request_status 以下等待请求类型:
转换请求状态指示已向请求程序授予对资源的请求,并且请求程序当前正在等待升级到要授予的初始请求。
等待请求状态指示请求程序当前未持有对资源的已授予请求。
由于 sys.dm_tran_locks 从内部锁管理器数据结构填充,因此维护此信息不会增加常规处理的额外开销。 具体化该视图需要访问锁管理器的内部数据结构。 这可能会略微影响服务器中的常规处理。 这些影响应该很难察觉,并且应该只会影响频繁使用的资源。 由于该视图中的数据与活动的锁管理器状态相对应,因此该数据可能会随时更改,并且在获取和释放锁时会相应地添加和删除行。 鉴于保护锁管理器结构的完整性的性质,查询此视图的应用程序可能会遇到不可预知的性能。 该视图不包含历史信息。
仅当所有资源组列都相等时,才对同一资源执行两个请求。
您可以使用下列工具控制读取操作的锁定:
SET TRANSACTION ISOLATION LEVEL用来指定会话的锁定级别。 有关详细信息,请参阅SET TRANSACTION ISOLATION LEVEL(Transact-SQL)。锁定表提示为子句中单个表的引用
FROM指定锁定级别。 有关语法和限制,请参阅表提示 (Transact-SQL)。
在一个 session_id 资源下运行的资源可以具有多个已授予的锁。 在一个会话下运行的不同实体可以拥有同一资源上的锁,并且信息显示在request_owner_typerequest_owner_id返回的sys.dm_tran_locks列中。 如果存在相同 request_owner_type 实例的多个实例,则 request_owner_id 使用该列来区分每个实例。 对于分布式事务, request_owner_type 列 request_owner_guid 显示不同的实体信息。
例如,会话 S1 拥有共享锁 Table1;事务 T1(在会话 S1 下运行)也拥有共享锁 Table1。 在这种情况下, resource_description 返回的 sys.dm_tran_locks 列显示同一资源的两个实例。 该 request_owner_type 列以会话的形式显示一个实例,另一个实例显示为事务。 此外, resource_owner_id 该列具有不同的值。
在一个会话下运行的多个游标无法区分,被视为一个实体。
未与 session_id 值关联的分布式事务是孤立的事务,并为其 session_id 分配了值 -2。 有关详细信息,请参阅 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资源开放,因为IDHoBt是呼叫者可以提供的额外信息,而并非所有呼叫者都能提供这些信息。 |
KEY |
表示索引中的一行。 |
HoBt ID。 此值对应于 sys.partitions.hobt_id。 |
EXTENT |
表示数据文件区。 区是由八个连续页构成的组。 | 不适用 |
RID |
表示堆中的物理行。 |
HoBt ID。 此值对应于 sys.partitions.hobt_id。
HoBt该ID并不总是对RID资源开放,因为HoBtID是呼叫者可以提供的额外信息,而并非所有呼叫者都能提供这些信息。 |
APPLICATION |
表示指定了应用程序的资源。 | 不适用 |
METADATA |
表示元数据信息。 | 不适用 |
HOBT |
表示堆或 B 树。 它们是基本访问路径结构。 |
HoBt ID。 此值对应于 sys.partitions.hobt_id。 |
OIB |
表示联机索引(re)生成。 |
HoBt ID。 此值对应于 sys.partitions.hobt_id。 |
ALLOCATION_UNIT |
表示一组相关页,如索引分区。 每个分配单元都包含一个索引分配映射 (IAM) 链。 | 分配单元 ID。 此值对应于 sys.allocation_units.allocation_unit_id。 |
ROW_GROUP |
表示列存储行组。 | |
XACT |
表示事务。 启用优化锁定时发生。 | 有两种情况: 方案 1 (所有者) - 资源类型: XACT。- 资源描述:当 TID锁被持有时,是resource_description资源。XACT- 资源关联的实体 ID: resource_associated_entity_id 为 0。方案 2 (Waiter) - 资源类型: XACT。- 资源说明:当请求等待 TID 锁时,资源 resource_descriptionXACT后跟基础KEY或RID资源。- 资源关联实体ID: resource_associated_entity_id 是底层 HoBt ID。 |
注意
文档在提到索引时一般使用 B 树这个术语。 在行存储索引中,数据库引擎实现了 B+ 树。 这不适用于列存储索引或内存优化表上的索引。 有关详细信息,请参阅 SQL Server 以及 Azure SQL 索引体系结构和设计指南。
下表列出了与每个资源类型相关联的子类型。
| 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。 |
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 页上的八个混合页槽之一。 |
APPLICATION |
<DbPrincipalId>:<up to 32 characters>:(<hash_value>) |
表示用于划分此应用程序锁资源范围的数据库主体的 ID。 还包含与此应用程序锁资源相对应的资源字符串,最多包含其中的 32 个字符。 在某些情况下,由于完整字符串不再可用,只能显示两个字符。 只有在恢复过程中重新获取的应用程序锁处于数据库恢复期间才会发生此行为。 哈希值表示与此应用程序锁资源相对应的完整资源字符串的哈希。 |
HOBT |
不适用 |
HoBt 身份证包含在 resource_associated_entity_id. |
ALLOCATION_UNIT |
不适用 | 分配单元 ID 包括为 resource_associated_entity_id. |
XACT |
<dbid>:<XdesId low>:<XdesId high> |
TID (事务ID)资源。 启用优化锁定时发生。 |
XACT KEY |
[XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) |
事务正在等待的底层资源,带有索引 KEY 对象。 启用优化锁定时发生。 |
XACT RID |
[XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) |
事务正在等待的底层资源,堆 RID 对象。 启用优化锁定时发生。 |
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 或 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 |
标识为仅供参考。 不支持。 不保证以后的兼容性。 |
示例
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> 替换为 database_id from sys.databases。
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 关联的 session_id 信息。 可以在 Windows 性能监视器中监视线程的性能。 此查询不返回 session_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