如何克服数据流任务中的vs_needsnewmetadata错误?


5

我有一个SSIS包,可以将表中的数据从一个SQL Server 2005复制到另一个SQL Server 2005.我通过“数据流”任务完成此任务。在包配置文件中,我公开了目标表名。

问题是,当我在配置文件(通过记事本)更改目标表的名称,我得到以下错误“vs_needsnewmetadata”。我想我明白了这个问题......当我第一次设置软件包时,目标表格列映射是固定的。

问:什么是做上面的SSIS包的最简单的方法?

我看了网上关于编程设置的元数据和所有,但我想避免这种情况。此外,我写了一个C#控制台应用程序,一切都很好......所有的表格等都在app.config中指定......但显然这个解决方案不够好。

0

如果你正在做的是复制从一个SQL2005服务器到另一个数据,我只想创建链接的服务器,并使用存储过程来复制数据。一个SSIS包是矫枉过正的。

How to Create linked server

一旦链接的服务器中创建你只是程序类似...

INSERT INTO server1.dbo.database1.table1(id,name) 
SELECT id, name FROM server2.dbo.database1.table1 

据SSIS包我一直有重开和重建包,以便元数据在修改表列属性时得到更新。


1

检查新的目标表具有相同的列旧的。

我相信如果列是不同的,并且目标不能再将其输入列映射到表列,则会发生错误。如果两个表具有相同的模式,则不应发生此错误。


6

是否已经设置DelayValidation为False上的数据源目的地属性?如果没有,请尝试。

编辑:当然,这应该是DelayValidation为真,所以它只是继续前进,而不是检查。另外,不要在记事本中更改软件包,为什么不把表名放在变量中,将变量放到目标表达式中,然后将变量暴露在.DtsConfig配置文件中?那么你可以改变这个没有危险。


2

匹配大小写敏感的源目标列已为我完成了工作。

就像在我的情况SrNo_prod是开发柱,并使用它,我们开发了DTSX,而它已经在督促SrNo_Prod创建,从制作到P情况p变化之后,我们得到了包的成功执行。