Ben*_*att 6 t-sql sql-server ssis stored-procedures sql-merge
我有一个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)".
Run Code Online (Sandbox Code Playgroud)
该过程是一个MERGE语句,它将视图中的数据合并到与SP相同的服务器上的另一个数据库中的表中.
视图指的是链接服务器OtherServer.链接服务器上引用的数据库将被删除并在每晚重新创建.
到目前为止,我尝试过这些东西:
1)在运行MERGE之前删除并重新创建视图.
2)定义包含MERGE的SP WITH RECOMPILE.
3)包装MERGE语句,EXEC()因此不会提前编译.
4)Bypass Prepare在SSIS的相关步骤中设置为true.
编辑:
具有存储过程的服务器正在运行SQL Server 2008.链接的服务器是2008 R2.
Kyl*_*ale 10
所以问题是你正在使用链接服务器对象的同义词,它不能很好地与OLEDB的元数据目录一起使用(这就是生成你在错误消息中看到的那些数字的原因.)有两种解决方案:
1)通话
DBCC FREEPROCCACHE
Run Code Online (Sandbox Code Playgroud)
在链接的服务器上.由于数据库每天都被丢弃,因此清除缓存可能不会对数据库的其他用户造成负担.
2)在存储过程中使用完整的四部分表示法(ServerName.DatabaseName.SchemaName.ObjectName).
| 归档时间: |
|
| 查看次数: |
4825 次 |
| 最近记录: |