访问SQL Server 2012数据库的第三方应用程序在执行大约20分钟后出现[Microsoft][ODBC SQL Server Driver]Query timeout expired
错误。SQL Server查询超时
这是我的数据库上看到的应用程序开始接收错误后:
SPID 102没有在上面的查询所示。这是同一过程的另一个来自同一应用程序的连接。我能够在下面的屏幕截图中捕捉到这些细节。它是此截图中最上面一行的一个。道歉,截图时滚动条被移动到右侧。
AutoShrink
设置为TRUE
此数据库上时发生这种情况。
它看起来像:
从后来开始对第三方应用的几个连接正在等待的SPID 27 - 这是一个AUTOSHIRNK命令
SPID 27正在等待SPID 102是从同一个第三方应用程序
问题的另一个方面:
是否有任何方法可以判断数据库上自
AutoShirnk
设置为TRUE
以来是否创建了与SPID 27的连接?如果是这样,为什么它在SPID 102上等待,为什么其他连接(83,85,86,88和90)等待27?
根据下面的链接TechNet文章,自动收缩应该没有数据库
上的任何活动的影响,如果数据库的AUTO_SHRINK选项设置为ON,数据库 引擎减小数据库中文件的大小。此活动 发生在后台,并且不影响数据库中的任何用户活动 。
注:
这是目前SQL Server上运行,此问题将发生2012 SP1。
当应用程序在SQL Server 2008 SP3上运行数据库时,应用程序中的此进程正常工作。
你真的不应该使用自动收缩反正。 – DavidG 2014-10-01 13:03:17
他们应该将AutoShrink重命名为AutoCrippleDatabase。关掉这场灾难,这个问题就会消失。 – 2014-10-01 13:32:10
使用DMV来查看查询文本并在运行时进行计划..'sys.dm_exec_query_stats'交叉应用'sys.dm_exec_query_plan'交叉应用'sys.dm_exec_sql_text' – Tak 2014-10-01 14:39:03