有没有办法可以在事后识别出正在阻塞的进程或被另一个进程阻塞的进程,而无需提前进行设置?
我的每周维护工作(重建索引、更新统计数据)运行时间非常长。我认为它正在尝试处理某件事,但遇到了阻止它继续的阻塞,但我不知道那可能是什么。
谢谢!
答案1
我检查了 SQL 2005 DMV 的概述,一切似乎都表明系统视图和功能仅实时收集交易信息。可以使用 fn_trace_gettable 访问默认跟踪,您可以在那里找到一些详细信息。
捕获这些信息的最佳方式就像您所建议的一样,提前捕获。我们实际上有一个第三方工具专门用于此目的;捕获查询信息,然后我们可以使用它来调查事后的性能问题。
答案2
不,您需要自己设置一些日志记录到表中,以便事后进行查询。