SQL Server 2005链接服务器查询不会返回预期的错误

时间:2010-10-07 10:00:49

标签: sql-server distributed linked-server

我正在查询链接的SQL Server,并且没有收到我在本地查询时遇到的错误。

这样的事情:

SELECT CAST(ColumnName AS INT)FROM TableName

和此:

SELECT CAST(ColumnName AS INT)FROM ServerName.DatabaseName.Schema.TableName

本地运行时的第一个查询返回错误“将表达式转换为数据类型int的算术溢出错误”。因为某些值超出了范围。

但是,从不同服务器运行的第二个查询只返回所有“有效”行。

我希望这是按设计工作的,但是我用google搜索,无法找到解释本地查询与分布式行为差异的任何地方。谁能指出我正确的方向?我还想知道是否有一些配置选项会改变这种情况。

提前致谢。

1 个答案:

答案 0 :(得分:0)

查看SET ARITHABORT和SET ANSI_WARNINGS选项。当两者都关闭时,将抑制溢出错误并返回NULL。它们可以设置在(至少)三个不同的位置:连接,数据库或代码。这意味着您有时可能会出现意外行为,因为有人设置了数据库选项并忘记了它,或者有人正在使用默认情况下以不同方式设置某些选项的连接库。更多信息:

http://msdn.microsoft.com/en-us/library/ms191203(v=SQL.90).aspx