gpt4 book ai didi

sql - SSDT 发布超时

转载 作者:行者123 更新时间:2023-12-02 08:21:52 27 4
gpt4 key购买 nike

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

我曾尝试按照博客文章在注册表中设置超时属性,但它也无济于事..

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

当我尝试调查发布的哪一部分导致延迟时,我可以识别出这一点。此查询持续运行很长时间,导致发布期间超时。我在开发和生产中运行了相同的程序,它立即运行并返回零行,因为我们在系统中没有任何空间索引..

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

 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 子句时,它会持续运行很长时间。您能帮我找出这里可能出现的问题以及我可以尝试解决的任何可能的修复吗?

AND OBJECTPROPERTY([o].[object_id], N'IsSystemTable') = 0

 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 的估计执行计划: enter image description here

最佳答案

好的,这周我在 SQL Server 2014 SP1 CU6 中启用 TF4199 后遇到了与您相同的问题。突然间,我们对某些数据库的构建超时了,而其他数据库则很好。我们认为这是由于 dacpac 的大小所致,但我们最大的数据库并未受到影响。我们确实尝试更新统计数据,但它们对我们不起作用。我们得到的 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 秒。这是我用来解决更新上述对象的静态问题的代码(我们有多个数据库有问题):

exec sp_msforeachdb '        
use [?];
update statistics sys.sysschobjs;
update statistics sys.sysobjvalues;
update statistics sys.sysidxstats;
update statistics sys.syssingleobjrefs;
';

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

关于sql - SSDT 发布超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com