SQL Server 2008 R2数据导出问题

时间:2012-08-28 15:08:07

标签: sql sql-server sql-server-2008-r2

我正在尝试将数据从我的生产数据库导出到我的开发数据库,​​但是我收到了这个错误:

  

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

有没有办法检查哪一列是因为我有20个表,所有表都使用列名id或者至少得到更好的错误报告?

5 个答案:

答案 0 :(得分:33)

当您选择要从中导入的表时,只需单击Edit mappings即可。并选中Enable identity insert复选框。你应该为每个选择的表做到这一点。然后,您可以完成导入。在同样的情况下帮助了我。

答案 1 :(得分:5)

如果列ID是标识列,则可能设置为在插入行时自动生成,并且无法直接写入。

要保留从生产环境到测试的链接,请使用:

SET Identity_Insert <TableName> ON

允许您编写身份值。

答案 2 :(得分:2)

我所要做的就是:

  • 右键单击列(在本例中为“ID”)
  • 选择修改
  • 在“列属性”内向下滚动,直到看到“标识规范”
  • 展开视图,然后从下拉菜单中选择NO。

如果有人知道不同(更快)的方式,请分享

答案 3 :(得分:0)

听起来好像您可能正在尝试将值插入已声明为IDENTITY字段的列中。

答案 4 :(得分:0)

嗯,答案有点晚,但我还是为了向社区提供而发布它。

我假设您正在尝试复制表(而不是部分数据)。我的回答是基于这个假设。

  1. 通过SSMS中的对象资源管理器连接到源数据库。
  2. 右键单击要复制其表的数据库
  3. 转到&#39;任务&#39; - &GT; &#39;出口&#39; 即可。
  4. 选择您的源服务器和目标服务器,如果您不希望在手按下下一步之前运行其他脚本(&#39;从一个或多个表或视图复制数据&#39;)。现在,您可以选择要复制到目标的表。
  5. 选择要完全复制到目标的表。然后点击编辑映射&#39;。在这里,您可以启用身份插入&#39;。您还可以选择其他选项,然后在按OK之前检查屏幕。

    如果您不在此处使用SSMS的快速版本,您可以创建一个SSIS包来创建作业并在将来自动化此过程。您可以立即查看“立即运行”。并按照屏幕关于它如何处理所有警告和错误。希望你不会得到任何东西。祝你好运!

    Tested with:
    (
        Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) 
        Jun 17 2011 00:57:23 
        Copyright (c) Microsoft Corporation
        Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)
    )