我有EXEC
手動運行時正確地執行每一次SQL Server存儲過程返回架構版本更改錯誤,但是當它運行作爲一個SSIS包的一部分,它失敗,這樣的錯誤:存儲過程從SSIS運行時,而不是在直接運行
Executing the query "EXECUTE (ProcName) " failed with the following error:
"The OLE DB provider "SQLNCLI10" for linked server "(OtherServer)" reported a
change in schema version between compile time ("177833127975044") and
run time ("177841717910098") for table (Server.Database.Schema.Table)".
的過程是一個MERGE
聲明,從視圖中合併數據到一個表中的相同的服務器上SP的另一個數據庫。
該視圖指的是鏈接的服務器OtherServer
。鏈接服務器上引用的數據庫每晚都會被刪除並重新創建。
到目前爲止,我已經嘗試了這些東西:
1)刪除並重新創建運行在合併之前的觀點。
2)定義包含MERGE WITH RECOMPILE
的SP。
3)包裝,在EXEC()
MERGE語句所以它不會提前編譯。
4)在SSIS的相關步驟設置Bypass Prepare
爲true。
編輯:
與存儲過程中的服務器正在運行SQL Server 2008中的鏈接服務器2008 R2。
有點兒重手,但可您可以在視圖從重新創建的數據庫中的數據(不使用SSIS)轉移到每次被重新創建時的靜態數據庫,並參照靜態數據庫。我不確定有什麼方法可以使SSIS與數據庫被刪除和重新創建相配合。除非你每次都重新創建你的SSIS包。 –
你使用的是什麼版本的SSIS? –
有一些相關的討論[這裏](http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/0223b695-f698-41a6-8ddc-deabd6306aae/)。 – criticalfix