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


82

我正在使用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导入和导出向导)

看来我无法导入标识列和时间戳列,因此如何强制导入这些值?

Answers:


28

在导入日期之前,执行以下查询以设置身份插入:

SET IDENTITY_INSERT TableName ON

然后执行导入操作。

导入日期后,执行以下查询以设置身份插入:

SET IDENTITY_INSERT TableName OFF

223

充分考虑了Kishore的回答,如果您要修改软件包,则该方法有效。由于您使用的是导入/导出向导,因此更直接的方法是检查Enable Identity Insert“列映射”选项卡上的。

在导入导出向导中,选择要复制的表后,单击Edit Mappings...按钮

在此处输入图片说明

在出现的屏幕中,单击Enable identity insert属性,您的身份将被复制。

在此处输入图片说明

最终结果与发出SET IDENTITY_INSERT TableName ON&OFF相同,但这是在构建时自动完成的。


感谢身份列问题已解决,现在我在时间戳列方面遇到了问题。你知道我能和他们做什么吗?
约翰·顾


12
如果要导入多个表,则可以在列表中选择多个表,然后单击“编辑映射”以使“启用身份插入”选项一次单击即可应用于所有选定的表。
pmartin

1
Kishore解决方案无法解决我的问题,但您提供的解决方案可以解决我的问题。非常感谢。
MadJlzz

我想知道是否需要导出后:SET IDENTITY_INSERT TableName OFF。谢谢。
Kevin .NET
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.