【问题标题】:Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column错误 0xc0202049:数据流任务 1:插入只读列失败
【发布时间】:2014-01-23 18:56:25
【问题描述】:

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

  1. 对于目的地,我选择了“SQL server native client 10”。

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

  3. SSIS 立即运行

但我收到以下错误,

操作停止...

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

  • 初始化连接(成功)

  • 设置 SQL 命令(成功)

  • 设置源连接(成功)

  • 设置目标连接(成功)

  • 验证(错误)

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

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

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

好像无法导入标识列和时间戳列,如何强制导入这些值?

【问题讨论】:

    标签: sql-server sql-server-2008 ssis etl


    【解决方案1】:

    充分尊重 Kishore 的回答,如果您正在修改包,该方法是有效的。由于您使用的是导入/导出向导,因此更直接的方法是选中“列映射”选项卡上的 Enable Identity Insert 框。

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

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

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

    【讨论】:

    • 感谢身份列问题已解决,现在我遇到了时间戳列的问题。知道我能用它们做什么吗?
    • 这里提到了时间戳:sqlmatters.com/Articles/…
    • 如果您要导入多个表,您可以在列表中选择多个表,然后单击编辑映射以使启用标识插入选项一键应用于所有选定的表。
    • Kishore 解决方案没有解决我的问题,但您提供的解决方案可以解决。非常感谢。
    • 我想知道导出后是否需要这样做:SET IDENTITY_INSERT TableName OFF。谢谢。
    【解决方案2】:

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

    SET IDENTITY_INSERT TableName ON
    

    然后进行导入操作。

    导入日期后执行以下查询以关闭身份插入:

    SET IDENTITY_INSERT TableName OFF
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      相关资源
      最近更新 更多