Sen*_*ran 2 sql deployment timeout sql-server-2014 sql-server-data-tools
我通常使用 SQLPackage 命令提示符路由进行部署,但是这次当我尝试发布到测试服务器时它超时了。
我曾尝试按照博客文章在注册表中设置超时属性,但它也无济于事..
当我尝试调查发布的哪一部分导致延迟时,我可以确定这一点。此查询长时间运行导致发布期间超时。我在开发和生产中运行相同的,它立即运行并返回零行,因为我们在系统中没有任何空间索引..
我试图简化查询,当我运行下面的查询时,它会立即运行并按预期返回一个空的结果集。
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
Run Code Online (Sandbox Code Playgroud)
但是,当我添加 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
Run Code Online (Sandbox Code Playgroud)
好的,本周我们在 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
Run Code Online (Sandbox Code Playgroud)
因此,我接受了您的查询并进行了一些调查。使用 SQL Sentry 我发现连接图如下所示:
我创建了下面的脚本(进一步阅读),看看我是否可以更新表格上的静态数据(您的思考过程,谢谢)。我发现,一旦您更新以下统计信息:
sys.sysschobjs
sys.sysobjvalues
sys.sysidxstats
sys.syssingleobjrefs
Run Code Online (Sandbox Code Playgroud)
您上面显示的查询从 51m 15s(是的,花了那么长时间)变为 0s。这是我用来解决更新上述对象的静态问题的代码(我们有多个 DB 有问题):
exec sp_msforeachdb '
use [?];
update statistics sys.sysschobjs;
update statistics sys.sysobjvalues;
update statistics sys.sysidxstats;
update statistics sys.syssingleobjrefs;
';
Run Code Online (Sandbox Code Playgroud)
我希望这会有所帮助,您遇到的问题是这四个表上的静态数据已过时,需要更新。