EXEC
을 사용하여 수동으로 실행할 때마다 올바르게 실행되는 SQL Server 저장 프로 시저가 있지만 SSIS 패키지의 일부로 실행될 때 이와 같은 오류가 실패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)".
절차는 SP와 같은 서버에서 다른 데이터베이스에 테이블로 도면 데이터를 병합 MERGE
문이다.
뷰는 연결된 서버 OtherServer
을 참조합니다. 연결된 서버에서 참조되는 데이터베이스는 야간에 삭제되고 다시 작성됩니다.
1) 떨어 뜨리 및 병합을 실행하기 전에 뷰를 재 작성.
2) MERGE WITH RECOMPILE
이 포함 된 SP 정의.
3) MERGE 문을 EXEC()
에 넣어서 미리 컴파일하지 않도록하십시오.
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