小编Hen*_*sen的帖子

如何避免SQL中的"除以零"错误?

我有这个错误消息:

Msg 8134,Level 16,State 1,Line 1遇到零误差.

编写SQL代码的最佳方法是什么,以便我再也不会看到此错误消息?

我可以做以下任何一种情况:

  • 添加一个where子句,使我的除数永远不为零

要么

  • 我可以添加一个case语句,以便对零进行特殊处理.

是使用NULLIF条款的最佳方式吗?

有没有更好的方法,或者如何实施?

sql sql-server sql-server-2005 sql-server-2008

339
推荐指数
9
解决办法
76万
查看次数

SSDT 发布超时

我通常使用 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
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] = …
Run Code Online (Sandbox Code Playgroud)

sql deployment timeout sql-server-2014 sql-server-data-tools

2
推荐指数
1
解决办法
1737
查看次数