2015-09-18 15 views
0

如果任何人都可以協助解決此問題,我將非常感激。我現在一直在掙扎已久,似乎無法解決。SSDT + LinkedServer =異構查詢需要爲連接設置ANSI_NULLS和ANSI_WARNINGS選項

  • 我有一個SSDT項目(VS2012,SQL2008)與存儲過程 引用鏈接的服務器。

  • 該項目成功生成

  • 當嘗試部署,與(的LocalDB)或「定期」 SQL 服務器,或者使用F5或模式比較,部署失敗,因爲鏈接的服務器不在定義目標

  • 定義鏈接服務器後,仍然部署失敗 任何存儲過程與引用鏈接服務器的項目:

    錯誤200 SQL72014:.net SqlClient數據提供:消息7405,級別16, 狀態1,過程usp_MemEligGetFullData,線157個異類 查詢需要ANSI_NULLS和ANSI_WARNINGS選項爲連接設置 。這確保了一致的查詢語義。啓用 這些選項,然後重新發出您的查詢。

添加SET ANSI_NULL ON和SET ANSI_WARNINGS ON這些存儲過程並沒有幫助,也不會選擇在項目屬性的數據庫設置相應的複選框。

這是整個團隊在企業環境中的阻塞問題,所以如果有人對此有何想法,我會非常感激!

回答

0

嘗試創建通過SSMS的存儲過程,但在執行SET ANSI_NULLS ON和SET ANSI_WARNINGS ON批處理立即CREATE PROCEDURE語句之前,像這樣:

SET ANSI_NULLS ON 
SET ANSI_WARNINGS ON 
GO 
CREATE PROCEDURE usp_MemEligGetFullData AS /* stuff */ 

如果這是成功的,然後檢查是否腳本由SSDT生成的還包含create procedure語句前的那些set語句。如果沒有,則確保啓用了腳本數據庫選項設置。如果它仍然沒有,那麼在最壞的情況下,你可以編寫一個deployment contributor來修改生成的TSQL。

1
  1. 在Visual Studio中,
  2. 右鍵點擊存儲過程
  3. 點擊屬性
  4. 更改ANSI空值,以 '開'

Visual Studio

相關問題