2016-05-27 27 views
0

是否有一种方法或我可以运行的存储过程或查询来获取以前在数据库上运行并锁定表的所有查询/事务的列表。查询以获取运行并导致事务锁的历史查询

我正在研究做一个分析,看看哪些交易是锁定什么表。

+0

所有查询在任何时候都锁定表的不同程度,但它的除非它影响性能或导致死锁,否则不是问题。你有解决性能或死锁问题吗? –

+0

如果你需要这种数据,你必须自己收集它(或使用第三方工具) –

+0

@ Nick.McDermaid是的,这正是我正在寻找的。任何想法我怎么能做到这一点。 – devista

回答

0

这似乎是一个更棘手的问题。

关于锁定的历史数据,只要我们不是在谈论诸如“查询商店”或其他一些可被视为“外部”的技术,DMV sys.dm_db_index_operational_stats就会累积。

该DMV相对稳定。但是其对应的sys.dm_exec_procedure_stats有一个改变倾向,一旦特定的计划,可能积累一些“有趣”的数据,重新编译。

随着统计变化率变高,累积数据的这种瞬态特性趋于更加明显。所以,你可以看到,有时(或者甚至大部分时间)你可能无法获得一个锁与其使用来自** stats家族的DMV的原因之间的确切关联,但知道这个漏报是如何发生的,你有一些信息可以做出好的判断。

添加sys.sql_dependencies链接锁受影响的对象和过程,这是一个起点。

请注意额外的资源***统计DMV家庭: