SQL Server:查找以前历史查询的事务级别

Posted

技术标签:

【中文标题】SQL Server:查找以前历史查询的事务级别【英文标题】:SQL Server: Find Transaction Level of Previous Historical Queries 【发布时间】:2022-01-11 21:34:28 【问题描述】:

如何找到以前在 SQL Server 中运行过的查询的事务级别?这仅适用于当前正在运行的查询。

https://blog.sqlauthority.com/2018/06/07/sql-server-how-to-know-transaction-isolation-level-for-each-session/

SELECT session_id, start_time, status,
total_elapsed_time,
CASE transaction_isolation_level
WHEN 1 THEN 'ReadUncomitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot'
ELSE 'Unspecified' END AS transaction_isolation_level,
sh.text, ph.query_plan
FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) sh
CROSS APPLY sys.dm_exec_query_plan(plan_handle) ph

目前使用的是 Sql server 2019。

【问题讨论】:

您需要查询存储或扩展事件。 SQL Server 不会跟踪此历史查询,否则 嗨 @Charlieface 你是说没有 sql DMV 可以做到这一点吗?谢谢 恐怕不行,除非你启用了Query Store或者使用Extended Events,那么你可以把它从XML计划中拉出来 嗨@Charlieface请把你的cmets作为答案,我可以送分,谢谢 【参考方案1】:

这在标准配置下是不可能的。

你唯一的选择是

创建一个跟踪它的扩展事件会话 启用查询存储并从计划中读取信息 使用 Profiler 设置跟踪

【讨论】:

以上是关于SQL Server:查找以前历史查询的事务级别的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER的锁机制——概述(锁与事务隔离级别)

30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

SQL Server 事务隔离级别

SQL Server查询优化和事务处理

mysql,oracle,sql server中的默认事务隔离级别查看,更改