SQL Server 2008 R2数据导出问题
我正在尝试将数据从生产数据库导出到开发数据库,但出现以下错误: 消息错误0xc0202049:数据流任务1:无法插入到 只读列“id”。(SQL Server导入和导出向导)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
有没有办法检查是哪一列,因为我有20个表,它们都使用列名
id
,或者至少得到了更好的错误报告?如果列id是一个标识列,则很可能设置为在插入行时自动生成,并且无法直接写入
要保留从生产环境到测试的链接,请使用:
SET Identity_Insert <TableName> ON
SET Identity\u Insert ON
允许您写入标识值。听起来好像您可能试图将值插入已声明为标识字段的列中。我所要做的就是:
- 右键单击列(在本例中为“ID”)
- 选择“修改”
- 在列属性中向下滚动,直到看到标识规范
- 展开视图并从下拉菜单中选择“否”
如果有人知道另一种(更快的)方法,请分享好吧,答案有点晚了,但我还是发布了它,以提供给社区 我假设您正在尝试复制表(而不是部分数据)。我的答案是基于这个假设
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中删除了自动生成的函数,现在它似乎工作正常。谢谢你的帮助