首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSDT发布超时

SSDT发布超时
EN

Stack Overflow用户
提问于 2016-04-08 16:03:56
回答 2查看 1.8K关注 0票数 2

我通常使用SQLPackage命令提示符路由进行部署,但这一次,当我尝试发布到测试服务器时,它会超时。

我曾尝试根据博客文章在注册表中设置Timeout属性,但也没有帮助。

https://blogs.msdn.microsoft.com/sqlblog/2014/11/13/timeout-expired-while-publishing-to-sql-database-via-ssdt/

当我试图调查发布的哪个部分导致延迟时,我可以确定这一点。此查询会持续运行很长时间,导致发布过程中超时。我在Dev和production中运行了相同的命令,它立即运行并返回零行,因为我们在系统中没有任何空间索引。

我试图简化查询,当我运行下面的查询时,它会立即运行,并如预期的那样返回一个空结果集。

代码语言:javascript
复制
 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

但是当我添加where子句时,它会持续运行很长一段时间。你能帮我解决这里可能出现的问题以及我可以尝试解决的任何可能的修复方法吗?

和OBJECTPROPERTY(o.object_id,N‘’IsSystemTable‘)=0

代码语言:javascript
复制
 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       

Henrik从SQL Sentry plan Explorer添加了估计的执行计划:

EN

回答 2

Stack Overflow用户

发布于 2016-05-07 05:45:26

好吧,这周我们在SQL Server2014 SP1 CU6中启用了TF4199之后,我遇到了和你一样的问题。突然之间,我们为一些数据库的构建超时了,而另一些数据库则是正常的。我们认为这是由于dacpac的大小造成的,但是我们最大的数据库并没有受到影响。我们确实尝试过更新统计数据,但它们对我们不起作用。我们收到的SQLPackage.exe错误是:

代码语言:javascript
复制
*** 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图如下所示:

我创建了下面的脚本(进一步阅读),看看是否可以更新表上的统计信息(您的思考过程,谢谢)。我发现,一旦更新了以下内容的统计数据:

代码语言:javascript
复制
sys.sysschobjs
sys.sysobjvalues
sys.sysidxstats
sys.syssingleobjrefs

上面显示的查询从51m15s(是的,花了这么长时间)变成了0s。下面是我用来解决上述对象的静态更新问题的代码(我们有多个数据库有这个问题):

代码语言:javascript
复制
exec sp_msforeachdb '        
use [?];
update statistics sys.sysschobjs;
update statistics sys.sysobjvalues;
update statistics sys.sysidxstats;
update statistics sys.syssingleobjrefs;
';

我希望这对您有所帮助,您遇到的问题是这四个表上的统计数据已过期,需要更新。

票数 5
EN

Stack Overflow用户

发布于 2016-04-25 21:56:45

由于在上述DataWarehouse数据库上运行DBCC CHECKDB需要很长时间才能完成,所以我改为运行DBCC CHECKALLOC和DBCC CHECKCATALOG,没有看到任何问题。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36494523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档