6

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

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

问题:使用 ssis 包完成上述操作的最简单方法是什么?

我已经在线阅读了有关以编程方式设置元数据的信息,但我想避免这种情况。我还编写了一个 C# 控制台应用程序,它做的一切都很好......所有表等都在 app.config 中指定......但显然这个解决方案还不够好。

4

4 回答 4

6

您是否在 Data Source Destination 属性上将 DelayValidation 设置为 False?如果没有,请尝试。

编辑:当然这应该是延迟验证为真,所以它只是继续尝试而不是检查。此外,与其在记事本中更改包,为什么不将表名放入变量中,将变量放入目标的表达式中,然后在 .DtsConfig 配置文件中公开变量?然后你可以毫无危险地改变它。

于 2008-09-26T21:30:00.067 回答
2

匹配区分大小写的源目标列已经为我完成了工作。

就像在我的例子SrNo_prod中是 dev 中的列并使用它我们开发了 dtsx,而它是SrNo_Prod在 prod 中创建的,在将 case 更改为Pto之后p,我们成功执行了包。

于 2012-12-13T09:45:06.267 回答
1

Check if the new destination table has the same columns as the old one.

I believe the error occurs if the columns are different, and the destination can no longer map its input columns to the table columns. If two tables have the same schema, this error should not occur.

于 2008-09-26T07:50:43.977 回答
0

如果您所做的只是将数据从一台 SQL2005 服务器复制到另一台服务器,我只需创建一个链接服务器并使用存储过程来复制数据。SSIS 包是多余的。

如何创建链接服务器

创建链接服务器后,您只需编写类似...

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

就 SSIS 包而言,我总是不得不重新打开并重建包,以便在修改表列属性时更新元数据。

于 2008-09-23T23:00:31.053 回答