如何克服Data Flow任务中的vs_needsnewmetadata错误?
时间:2020-03-06 14:37:44 来源:igfitidea点击:
我有一个SSIS包,可以将表中的数据从一个SQL Server 2005复制到另一个SQL Server2005. 我使用"数据流"任务来完成此操作。在软件包配置文件中,我公开了目标表名称。
问题是,当我更改配置文件中的目标表名称(通过记事本)时,出现以下错误" vs_needsnewmetadata"。我想我理解问题了……首次设置软件包时,目标表的列映射是固定的。
问题:使用ssis软件包进行上述操作的最简单方法是什么?
我已在线阅读有关以编程方式设置元数据的信息,但我想避免这种情况。我也写了一个Cconsole应用程序,它做的一切都很好……所有表等都在app.config中指定了……但是显然这个解决方案还不够好。
解决方案
如果我们要做的只是将数据从一台SQL2005服务器复制到另一台SQL2005服务器,我将创建一个链接服务器并使用存储的proc复制数据。一个SSIS包太过分了。
如何创建链接服务器
创建链接服务器后,我们只需编写类似...的程序即可。
INSERT INTO server1.dbo.database1.table1(id,name) SELECT id, name FROM server2.dbo.database1.table1
到目前为止,我一直必须重新打开并重建SSIS包,以便在修改表列属性时更新元数据。
检查新目标表是否与旧目标表具有相同的列。
我相信如果列不同,则会发生错误,并且目标不能再将其输入列映射到表列。如果两个表具有相同的架构,则不应发生此错误。
我们是否已在"数据源目标"属性上将DelayValidation设置为False?如果没有,请尝试。
编辑:当然应该将DelayValidation设置为True,所以它只是继续进行尝试而不是进行检查。此外,为什么不在记事本中更改程序包,为什么不将表名放在变量中,将变量放在目标位置的Expression中,然后在.DtsConfig配置文件中公开变量?然后,我们可以无危险地进行更改。