我们的SQL Server 2008显示了一种奇怪的行为:
我们有一个SP,通常需要500毫秒才能执行。有时执行只需要16秒。奇怪的是,改变这个SP也需要16秒。
SP使用CTE返回一些数据。奇怪的是,当我们在SP的开头添加一个RETURN语句时,它也需要16秒。
SP使用未提交的隔离级别读取。我们已经使用SQL Server 2008 R2测试了另一台服务器并遇到了同样的问题。
我们不知道从哪里开始搜索此问题的来源。帮助:)
由于 托本
答案 0 :(得分:1)
更新您的数据库统计信息,并正式重新编译您的SP,看看是否有帮助。
http://msdn.microsoft.com/en-us/library/ms173804.aspx
EXEC sp_updatestats
http://msdn.microsoft.com/en-us/library/ms181647.aspx
EXEC sp_recompile SP_Name
同时强>
答案 1 :(得分:0)
你有几个选择。您可以设置一个扩展事件会话来捕获等待类型及其持续时间,以执行对此过程的一次调用并以此方式进行分析,或者您可以查看sys.dm_exec_requests或sys.dm_os_waiting_tasks之类的内容并查看指向等待状态的时间快照。如果我打赌,我会说你有类似程序试图授予自己权限或某些东西,所以你得到一个模式锁。但是在你看之前你不会确定。