Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008 R2数据导出问题_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

SQL Server 2008 R2数据导出问题

SQL Server 2008 R2数据导出问题,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我正在尝试将数据从生产数据库导出到开发数据库,但出现以下错误: 消息错误0xc0202049:数据流任务1:无法插入到 只读列“id”。(SQL Server导入和导出向导) 有没有办法检查是哪一列,因为我有20个表,它们都使用列名id,或者至少得到了更好的错误报告?如果列id是一个标识列,则很可能设置为在插入行时自动生成,并且无法直接写入 要保留从生产环境到测试的链接,请使用: SET Identity_Insert <TableName> ON SET Identity\u I

我正在尝试将数据从生产数据库导出到开发数据库,但出现以下错误:

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


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

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

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

SET Identity_Insert <TableName> ON
SET Identity\u Insert ON

允许您写入标识值。

听起来好像您可能试图将值插入已声明为标识字段的列中。

我所要做的就是:

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

如果有人知道另一种(更快的)方法,请分享

好吧,答案有点晚了,但我还是发布了它,以提供给社区

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

  • 通过SSMS中的对象资源管理器连接到源数据库
  • 右键单击要复制其表的数据库
  • 转到“任务”->“导出”
  • 选择源服务器和目标服务器,如果不想在手动之前运行其他脚本,只需按“下一步”(“从一个或多个表或视图复制数据”)。现在,您可以选择要复制到目标的表 选择要完全复制到目标的表。然后单击“编辑映射”。您可以在此处“启用标识插入”。您还将有其他选项,因此在按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)
    )
    
    通过以下方式进行测试:
    (
    Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(英特尔X86)
    2011年6月17日00:57:23
    版权所有(c)微软公司
    Windows NT 5.2上的企业版(版本3790:Service Pack 2)
    )
    
    选择要导入的表时,只需单击
    编辑映射
    。并选中
    启用标识插入
    复选框。对于每个choosen表,您都应该这样做。然后您可以完成导入。在同样的情况下,它对我也有帮助。

    我猜它更多地与dev数据库中任何表的权限有关,而不是与您试图导入数据的20个表中的任何一个表有关。您在dev数据库中使用的用户id有任何限制吗?没有,我是管理员,因此我的用户名有权完成任何任务。我的所有id列都会自动生成其值。我必须运行您的命令20次,然后我想?(每个表一次)如果您的ID是全局的,您只需要为负责生成值的表运行它。其他表可能没有指定为标识列。我用我的一张桌子试过了,但没用。这是错误:“表“用户”没有identity属性。无法执行设置操作。'标识来自[users]表吗?建议其他表中的[ID]列表示用户ID。一个有用的信息来源是:sp_help[TableName];这将为您提供有关表中列的信息,您要查找的是在输出中有一个条目的表,该条目详细说明了是否存在任何标识列。注意:您希望在测试/目标环境中应用设置,而不是在生产环境中,因为这些是您要插入的标识。我刚刚从ID中删除了自动生成的函数,现在它似乎工作正常。谢谢你的帮助