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

问题描述:

我在查询链接的SQL Server时没有收到本地查询时得到的错误。SQL Server 2005链接服务器查询不会返回预期的错误

事情是这样的:

SELECT CAST(AS的ColumnName INT)FROM表名

这:

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

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

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

我期望这是按照设计工作的,但是我在Google上搜索时找不到解释本地查询与分布式查询行为差异的任何地方。任何人都可以将我指向正确的方向吗?我也想知道是否有一些配置选项会改变这一点。

在此先感谢。

看看SET ARITHABORT和SET ANSI_WARNINGS选项。当两者都关闭时,那么溢出错误将被抑制,而NULL将被返回。它们可以设置在(至少)三个不同的地方:连接,数据库或代码。这意味着您有时可能会出现意想不到的行为,因为有人设置了数据库选项并忘记了该选项,或者某人正在使用连接库来默认设置不同的某些选项。点击此处了解详情:

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

+0

这两个设置在两者的情况。我得到的行为不是返回NULL,而是没有行被返回。也就是说,该表包含15,000行,但当我通过链接的服务器路由查询时,我只能得到3000行。 – Darren 2010-10-07 16:30:51