错误0xc0202049:数据流任务1:无法插入只读列

91

我正在使用SQL Server 2008导入和导出向导,需要导入一个数据库。我打开了SQL Server导入/导出向导,并执行以下操作:

  1. 对于目标,我选择了“SQL Server本机客户端10”。

  2. 然后我选择了从一个或多个表或视图复制数据。

  3. SSIS立即运行。

但是我遇到了以下错误:

操作已停止...

  • 初始化数据流任务(成功)

  • 初始化连接(成功)

  • 设置SQL命令(成功)

  • 设置源连接(成功)

  • 设置目标连接(成功)

  • 验证(错误)

消息 错误0xc0202049:数据流任务1:将值插入只读列“ActionID”失败。(SQL Server导入和导出向导)

错误0xc0202045:数据流任务1:列元数据验证失败。(SQL Server导入和导出向导)

错误0xc004706b:数据流任务1:“组件“目标 - AuditActions”(22)”验证失败并返回验证状态“VS_ISBROKEN”。(SQL Server导入和导出向导)

看起来我不能导入标识列和时间戳列,那么我该如何强制导入这些值?

3个回答

254
尊重Kishore的回答,如果你修改软件包,那么这种方法是有效的。由于您使用导入/导出向导,更直接的方法是在列映射选项卡上勾选启用标识插入框。
在导入导出向导中,在选择要复制的表后,点击编辑映射...按钮
在生成的屏幕中,单击启用标识插入属性,您的标识将被复制。
与发出SET IDENTITY_INSERT TableName ON/OFF相同的结果,但这是在构建时自动完成的。

感谢您解决了身份列的问题,现在我遇到了时间戳列的问题。您有什么想法可以帮助我解决吗? - John John
1
时间戳在此处提到:http://www.sqlmatters.com/Articles/Common%20Issues%20with%20the%20SQL%20Server%20Import%20and%20Export%20Wizard.aspx - Niall Connaughton
19
如果你正在导入多个表格,你可以在列表中选择多个表格,然后点击“编辑映射”以使“启用标识插入”选项适用于所有选定的表格,仅需单击一次即可。 - pmartin
1
Kishore的解决方案并没有解决我的问题,但是你提供的那个确实解决了。非常感谢。 - MadJlzz
我想知道在导出后是否需要执行:SET IDENTITY_INSERT TableName OFF。谢谢。 - Kevin .NET
显示剩余3条评论

31

在导入日期之前执行以下查询以设置identity insert:

SET IDENTITY_INSERT TableName ON

然后执行导入操作。

在导入日期后,执行以下查询以关闭 identity insert:

SET IDENTITY_INSERT TableName OFF

1

在创建数据流字符串时,您还可以在目标连接的连接管理器窗格中勾选“保留身份”复选框。这对我很有效。 输入图像描述


嘿,这真是帮了大忙! - Yoav24

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接