我有一个 SQL Server 存储过程,每次使用 手动运行时都能正确执行EXEC
,但是当它作为 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) 在运行 MERGE 之前删除并重新创建视图。
2) 定义包含 MERGE 的 SP WITH RECOMPILE
。
3) 将 MERGE 语句包装进去,EXEC()
这样它就不会被提前编译。
4)Bypass Prepare
在 SSIS 中的相关步骤上设置为 true。
编辑:
带有存储过程的服务器正在运行 SQL Server 2008。链接服务器是 2008 R2。