SSDT发布超时

时间:2016-04-08 08:03:56

标签: sql deployment timeout sql-server-2014 sql-server-data-tools

&lt; p&gt;我通常使用SQLPackage命令提示符路由进行部署,但这次当我尝试释放到测试服务器时它会超时。&lt; / p&gt; &lt; p&gt;我曾尝试按照博客文章在注册表中设置Timeout属性,但它也无济于事。&lt; / p&gt; &lt; p&gt;&lt; a href =“https://blogs.msdn.microsoft.com/sqlblog/2014/11/13/timeout-expired-while-publishing-to-sql-database-via-ssdt/"rel =“nofollow noreferrer”&gt; https://blogs.msdn.microsoft.com/sqlblog/2014/11/13/timeout-expired-while-publishing-to-sql-database-via-ssdt/< / a&gt; &LT; / p为H. &lt; p&gt;当我试图调查发布的哪个部分导致延迟时,我可以识别出这一点。此查询长时间运行,导致发布期间超时。我在开发和生产中运行相同的操作,它立即运行并返回零行,因为系统中没有任何空间索引。&lt; / p&gt; &lt; p&gt;我试图简化查询,当我运行下面时,它会立即运行并返回一个空的结果集。&lt; / p&gt; &LT;预&GT;&LT;代码&GT; SELECT * FROM     [sys]。[spatial_indexes] AS [si] WITH(NOLOCK)     INNER JOIN [sys]。[objects] AS [o] WITH(NOLOCK) ON [si]。[object_id] = [o]。[object_id] INNER JOIN [sys]。[spatial_index_tessellations] [sit] WITH(NOLOCK)ON [si]。[object_id] = [sit]。[object_id] AND [ si]。[index_id] = [sit]。[index_id] WHERE [si]。[is_hypothetical] = 0 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;但是当我添加where子句时它会持续运行很长时间..你能帮助我解决这里可能出现的问题吗?我可以尝试解决这个问题吗?&lt; / p&gt; &lt; p&gt; AND OBJECTPROPERTY([o]。[object_id],N'IsSystemTable')= 0&lt; / p&gt; &LT;预&GT;&LT;代码&GT; SELECT * FROM     [sys]。[spatial_indexes] AS [si] WITH(NOLOCK)     INNER JOIN [sys]。[objects] AS [o] WITH(NOLOCK) ON [si]。[object_id] = [o]。[object_id] INNER JOIN [sys]。[spatial_index_tessellations] [sit] WITH(NOLOCK)ON [si]。[object_id] = [sit]。[object_id] AND [ si]。[index_id] = [sit]。[index_id] WHERE [si]。[is_hypothetical] = 0         AND OBJECTPROPERTY([o]。[object_id],N'IsSystemTable')= 0 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt; Henrik从SQL Sentry Plan Explorer添加了估计的执行计划: &lt; a href =“https://i.stack.imgur.com/gIb65.png”rel =“nofollow noreferrer”&gt;&lt; img src =“https://i.stack.imgur.com/gIb65。 png“alt =”在此输入图像说明“&gt;&lt; / a&gt;&lt; / p&gt;

2 个答案:

答案 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我发现连接图如下所示:Join Diagram

我创建了下面的脚本(稍微阅读一下),看看我是否可以更新表格上的静态(你的思考过程,谢谢你)。我发现,一旦你更新了以下数据:

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而没有看到任何问题。

在目标数据库上更新索引统计信息后,查询现在可以在几秒钟内运行。