Sql-Server
View 的異構查詢錯誤
我最近第一次體驗到錯誤“異構查詢需要為連接設置 ANSI_NULLS 和 ANSI_WARNINGS 選項。 ”我沒有遇到過。我在這個站點和其他地方找到的幾乎所有資源都在儲存過程中處理了這種情況。
我的具體情況是供應商提供的應用程序和數據庫,我可以更改數據庫但不能更改應用程序。我在數據庫上創建了另一個伺服器的視圖(通過連結伺服器),但是當我嘗試在應用程序中使用它時,我得到了上述錯誤。我使用 SQL Profiler 來證明應用程序使用 ANSI NULL 和 WARNINGS OFF 來打開它的連接。我使用 SSMS 來證明連結可以使用那裡的預設值。但與 SP 不同的是,我不能在視圖上設置 ANSI WARNINGS。
我將數據庫上的 ANSI WARNINGS 設置為測試,該應用程序現在可以工作,但我無法負擔該應用程序的完整回歸測試,因此該解決方案不起作用。我還嘗試了許多不同的方法來實現連結伺服器,包括在伺服器上創建一個 ODBC 連接然後使用它。但這就像應用程序明確將 ANSI WARNINGS 設置為關閉一樣。
不確定是否重要,但源伺服器是 SQL2000,遠端伺服器是 SQL2008R2。
正如我在問題中所說,很多資源都處理了這個問題,但當它與視圖有關時卻沒有。我找到的解決方案是
1-在我的源伺服器上創建第二個數據庫。
2-使用連結伺服器在遠端數據庫上創建第二個數據庫
的視圖 3-更改第一個數據庫上的視圖以使用第二個數據庫上的視圖
4-更改第二個數據庫以在數據庫級別使用 ANSI WARNINGS ON