答案 0 :(得分:3)
好的,在我们在SQL Server 2014 SP1 CU6中打开TF4199之后,本周遇到了和你一样的问题。突然间,我们对某些数据库的构建超时,其他数据库也没问题。我们认为这是由于dacpac的大小,但我们最大的DB没有受到影响。我们确实尝试更新统计数据,但它们并不适用于我们。我们得到的SQLPackage.exe错误是:
*** Error extracting database:Could not extract package from specified database.
Unable to reconnect to database: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The wait operation timed out
所以我把你所拥有的东西用于查询并做了一些调查。使用SQL Sentry我发现连接图如下所示:
我创建了下面的脚本(稍微阅读一下),看看我是否可以更新表格上的静态(你的思考过程,谢谢你)。我发现,一旦你更新了以下数据:
sys.sysschobjs
sys.sysobjvalues
sys.sysidxstats
sys.syssingleobjrefs
您上面显示的查询从51分15秒开始(是的,花了那么长时间)到0秒。这是我用来解决更新上述对象的静态问题的代码(我们有多个DB有问题):
exec sp_msforeachdb '
use [?];
update statistics sys.sysschobjs;
update statistics sys.sysobjvalues;
update statistics sys.sysidxstats;
update statistics sys.syssingleobjrefs;
';
我希望这会有所帮助,您遇到的问题是这四个表上的静态都已过时,需要更新。
答案 1 :(得分:1)
由于在上述DataWarehouse数据库上运行DBCC CHECKDB需要很长时间才能完成,所以我运行了DBCC CHECKALLOC和DBCC CHECKCATALOG而没有看到任何问题。
在目标数据库上更新索引统计信息后,查询现在可以在几秒钟内运行。