2010-10-07 88 views
1

我在查詢鏈接的SQL Server時沒有收到本地查詢時得到的錯誤。SQL Server 2005鏈接服務器查詢不會返回預期的錯誤

事情是這樣的:

SELECT CAST(AS的ColumnName INT)FROM表名

這:

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

在本地運行時的第一個查詢返回一個錯誤「將算術溢出錯誤轉換爲數據類型爲int的表達式」。因爲有些值超出範圍。

但是,從不同服務器運行的第二個查詢只返回所有'有效'的行。

我期望這是按照設計工作的,但是我在Google上搜索時找不到解釋本地查詢與分佈式查詢行爲差異的任何地方。任何人都可以將我指向正確的方向嗎?我也想知道是否有一些配置選項會改變這一點。

在此先感謝。

回答

0

看看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