我正在查询链接的SQL Server,并且没有收到我在本地查询时遇到的错误。
这样的事情:
SELECT CAST(ColumnName AS INT)FROM TableName
和此:
SELECT CAST(ColumnName AS INT)FROM ServerName.DatabaseName.Schema.TableName
本地运行时的第一个查询返回错误“将表达式转换为数据类型int的算术溢出错误”。因为某些值超出了范围。
但是,从不同服务器运行的第二个查询只返回所有“有效”行。
我希望这是按设计工作的,但是我用google搜索,无法找到解释本地查询与分布式行为差异的任何地方。谁能指出我正确的方向?我还想知道是否有一些配置选项会改变这种情况。
提前致谢。
答案 0 :(得分:0)
查看SET ARITHABORT和SET ANSI_WARNINGS选项。当两者都关闭时,将抑制溢出错误并返回NULL。它们可以设置在(至少)三个不同的位置:连接,数据库或代码。这意味着您有时可能会出现意外行为,因为有人设置了数据库选项并忘记了它,或者有人正在使用默认情况下以不同方式设置某些选项的连接库。更多信息:
http://msdn.microsoft.com/en-us/library/ms191203(v=SQL.90).aspx