sqlserver查看死锁,以及执⾏语句
sql server 查看死锁,以及执⾏语句
source_type [资源锁定类型]
, DB_NAME(resource_database_id) as 数据库名
, t1.resource_associated_entity_id 锁定对象
, t1.request_mode as 等待者请求的锁定模式
, t1.request_session_id 等待者SIDsqlserver备份表语句
, t2.wait_duration_ms 等待时间
, (select TEXT
from sys.dm_exec_requests r
cross apply
sys.dm_exec_sql_text(r.sql_handle)
where r.session_id = t1.request_session_id) as 等待者要执⾏的SQL
, t2.blocking_session_id [锁定者SID]
, (select TEXT
from sys.sysprocesses p
cross apply
sys.dm_exec_sql_text(p.sql_handle)
where p.spid = t2.blocking_session_id
) 锁定者执⾏语句
from sys.dm_tran_locks t1,
sys.dm_os_waiting_tasks t2
where t1.lock_owner_address = t2.resource_address
sys.dm_tran_locks (Transact-SQL)
适⽤于: SQL Server (所有⽀持的版本) Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 并⾏数据仓库
返回 SQL Server 2019 (15.x) 中有关当前活动的锁管理器资源的信息。 向锁管理器发出的已授予锁或正等待授予锁的每个当前活动请求分别对应⼀⾏。
结果集中的列⼤体分为两组:资源组和请求组。 资源组说明正在进⾏锁请求的资源,请求组说明锁请求。
备注
若要从或调⽤此 Azure Synapse Analytics(SQL 数据仓库) 并⾏数据仓库 ,请使⽤名称dm_pdw_nodes_tran_locks。
表 1
列名称数据类型说明
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)NULL = 不授予对资源的访问权限。 ⽤作占位符。
Sch-m (架构稳定性) = 确保当任何会话在 schema 元素上持有架构稳定性锁时不删除架构元素,例如表或索引。
Sch-m (架构修改) = 必须由要更改指定资源架构的任何会话保留。 确保没有其他会话正在引⽤所指⽰的对象。
S (共享) = 授予持有的会话对资源的共享访问权限。
U (Update) = 表⽰对资源(最终可能会更新)获取的更新锁。 ⽤于防⽌常见形式的死锁,这类死锁在多个会话锁定资源并且稍后可能更新资源时发⽣。
X (独占) = 为持有会话授予对资源的独占访问权限。
IS (意向共享) = 指⽰在锁层次结构中的某个从属资源上放置 S 锁的意图。
IU (意向更新) = 指⽰将 U 锁放置在锁层次结构中的某个从属资源上。
IX (意向排他) = 指⽰将 X 锁放置在锁层次结构中的某个从属资源上。
SIU (共享意向更新) = 表⽰对资源的共享访问,⽬的是获取锁层次结构中的从属资源上的更新锁。
六个(共享意向排他) = 指⽰对资源的共享访问,⽬的是获取锁层次结构中的从属资源上的排他锁。
UIX (更新意向排他) = 指⽰对资源进⾏的更新锁保留,⽬的是获取锁层次结构中的从属资源上的排他锁。
BU = 由⼤容量操作使⽤。
RangeS_S (共享键范围和共享资源锁) = 表⽰可序列化范围扫描。
RangeS_U (共享键范围和更新资源锁) = 表⽰可串⾏更新扫描。
RangeI_N (插⼊键范围和 Null 资源锁) = ⽤于在将新键插⼊索引之前测试范围。
RangeI_S = 键范围转换锁,由 RangeI_N 和 S 锁的重叠创建。
RangeI_U = 由 RangeI_N 和 U 锁的重叠创建的键范围转换锁。
RangeI_X = 键范围转换锁,由 RangeI_N 和 X 锁的重叠创建。
RangeX_S = 键范围转换锁,由 RangeI_N 和 RangeS_S 重叠创建。 住.
RangeX_U = 键范围转换锁,由 RangeI_N 和 RangeS_U 锁的重叠创建。
RangeX_X (排他键范围和排他资源锁) = 这是在更新范围中的键时使⽤的转换锁。
request_type nvarchar(60)请求类型。 该值为 LOCK。
request_status nvarchar(60)该请求的当前状态。 可能的值有 GRANTED、CONVERT、WAIT、
LOW_PRIORITY_CONVERT、LOW_PRIORITY_WAIT 或 ABORT_BLOCKERS。 有关低优先级等待和中⽌阻塞程序的详细信息,请参阅的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。列名称数据类型说明
权限
在上 SQL Server ,需要 VIEW SERVER STATE 权限。
在 SQL 数据库 ⾼级层上,需要具有 VIEW DATABASE STATE 数据库中的权限。 在 SQL 数据库 标准层和基本层上,需要服务器管理员或Azure Active Directory 管理员帐户。
注解
已授予请求状态指⽰已将资源上的锁授予请求程序。 等待请求指⽰尚未授予请求。 request_status 列返回下列等待请求类型:
由于 sys.dm_tran_locks 从锁管理器的内部数据结构填充,因此维护该信息不会给常规处理带来额外的开销。 具体化该视图需要访问锁管理器的内部数据结构。 这可能会略微影响服务器中的常规处理。 这些影响应该很难察觉,并且应该只会影响频繁使⽤的资源。 由于该视图中的数据与活动的锁管理器状态相对应,因此该数据可能会随时更改,并且在获取和释放锁时会相应地添加和删除⾏。 该视图不包含历史信息。
仅当所有资源组列都相等时,才对同⼀资源执⾏两个请求。
您可以使⽤下列⼯具控制读取操作的锁定:
使⽤⼀个会话 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 列将具有不同的值。
在⼀个会话下运⾏的多个游标⽆法区分,被视为⼀个实体。
与会话 ID 值没有关联的分布式事务是孤⽴事务,向该事务分配的会话 ID 值为 -2。 有关详细信息,请参阅 。
住
锁加在 SQL Server 资源上(如在⼀个事务中读取或修改的⾏),以防⽌各种事务并发使⽤资源。 例如,如果⼀个排它 (X) 锁被⼀个事务加在某⼀表的某⼀⾏上,在这个锁被释放前,其他事务都不可以修改这⼀⾏。 尽可能少使⽤锁可提⾼并发性,从⽽改善性能。
资源详细信息
下表列出了在 resource_associated_entity_id 列中表⽰的资源。
资源详细信息
资源类型资源说明Resource_associated_entity_id
DATABASE表⽰数据库。不适⽤
⽂件表⽰数据库⽂件。 此⽂件可以是数据⽂件,
也可以是⽇志⽂件。
不适⽤
OBJECT 表⽰数据库对象。 此对象可以是数据表、视
图、存储过程、扩展存储过程或任何具有对象
ID 的对象。
对象 ID
PAGE表⽰数据⽂件中的单页。HoBt ID。 此值与 sys.partitions.hobt_id 相对应。 PAGE 资源并不总是有 HoBt ID,因为 HoBt ID 是可由调⽤⽅提供的额外信息,⽽有些调⽤⽅不能提供该信息。
KEY表⽰索引中的⼀⾏。HoBt ID。 此值与 sys.partitions.hobt_id 相对应。
EXTENT 表⽰数据⽂件区。 区是由⼋个连续页构成的
组。
不适⽤
RID表⽰堆中的物理⾏。HoBt ID。 此值与 sys.partitions.hobt_id 相对应。 RID 资源并不总是有HoBt ID,因为 HoBt ID 是可由调⽤⽅提供的额外信息,⽽有些调⽤⽅不能提供该信息。
APPLICATION表⽰指定了应⽤程序的资源。不适⽤
METADATA表⽰元数据信息。不适⽤
HOBT表⽰堆或 B 树。 它们是基本访问路径结构。HoBt ID。 此值与 sys.partitions.hobt_id 相对应。
ALLOCATION_UNIT 表⽰⼀组相关页,如索引分区。 每个分配单
元都包含⼀个索引分配映射 (IAM) 链。
分配单元 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 Service Broker 会话优先级操作,如 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标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADA
TA.CONVERSTATION_ENDPOINT_RECV标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.CONVERSTATION_ENDPOINT_SEND标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.CONVERSATION_GROUP标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.CONVERSATION_PRIORITY标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.CREDENTIAL标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.CRYPTOGRAPHIC_PROVIDER标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.DATA_SPACE标识为仅供参考。 不⽀持。 不保证以后的兼容性。METADATA.DATABASE标识为仅供参考。 不⽀持。 不保证以后的兼容性。ResourceSubType同步
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论