2012-08-28 30 views
8

我试图将数据从我的生产数据库导出到我的开发数据库,​​但我收到此错误:的SQL Server 2008 R2数据导出问题

Messages Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "id". (SQL Server Import and Export Wizard)

有没有一种方法来检查其列,因为我有20个表,他们都使用列名id或至少得到更好的错误报告?

+0

我猜测你的开发数据库中的任何一个表的权限比你试图导入数据的20个表中的任何一个都要多。您在开发数据库中使用的用户标识是否有任何限制? –

+0

不,我是管理员,所以我的用户名可以访问完成任何任务 – Geo

回答

2

我所要做的就是:

  • 在列右键单击(在这种情况下,“ID”)
  • 选择修改
  • 里面的列属性,直到你看到标识规格向下滚动
  • 展开视图并从下拉菜单中选择NO。

如果有谁知道这样做,请分享

5

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

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

SET Identity_Insert <TableName> ON 

为了让你写的标识值。

+0

我的所有ID列都自动生成其值。我必须运行你的命令20次,然后我想呢?(每个表一次) – Geo

+0

如果你的ID是全局的,那么你只需要为负责生成值的表运行它。其他表可能未指定为IDENTITY列。 –

+0

以及你的例子,你有。我用我的一张桌子试过了,但没有奏效。这是错误:'表'用户'没有标识属性。无法执行SET操作。' – Geo

0

听起来对我来说,好像您可能试图将值插入已被声明为IDENTITY字段的列中。

0

那么的不同(快)的方式,答案是有点晚了,但我无论如何张贴提供给社区的缘故。

我假设你试图复制表格(不是部分数据)。我的回答是基于这个假设。

  1. 通过SSMS中的对象资源管理器连接到源数据库。
  2. 右键单击要复制表的db
  3. 前往'任务' - >'导出'
  4. 选择您的源和目标服务器,并且如果您不希望在双手按下一步('从一个或多个表或视图中复制数据')之前运行其他脚本。现在您可以选择要复制到目标的表格。

选择想要完全复制到目标的表格。然后点击'编辑映射'。在这里你可以'启用身份识别'。您还可以选择其他选项,然后在按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) 
) 
24

只要点击Edit mappings当你选择表格导入和。并检查Enable identity insert复选框。而且你应该为每个选定的桌子做这个。然后你可以完成你的导入。它在相同的情况下帮助了我。