我正在尝试将数据从我的生产数据库导出到我的开发数据库,但是我收到了这个错误:
消息错误0xc0202049:数据流任务1:插入失败 只读列“id”。 (SQL Server导入和导出向导)
有没有办法检查哪一列是因为我有20个表,所有表都使用列名id
或者至少得到更好的错误报告?
答案 0 :(得分:33)
当您选择要从中导入的表时,只需单击Edit mappings
即可。并选中Enable identity insert
复选框。你应该为每个选择的表做到这一点。然后,您可以完成导入。在同样的情况下帮助了我。
答案 1 :(得分:5)
如果列ID是标识列,则可能设置为在插入行时自动生成,并且无法直接写入。
要保留从生产环境到测试的链接,请使用:
SET Identity_Insert <TableName> ON
允许您编写身份值。
答案 2 :(得分:2)
我所要做的就是:
如果有人知道不同(更快)的方式,请分享
答案 3 :(得分:0)
听起来好像您可能正在尝试将值插入已声明为IDENTITY字段的列中。
答案 4 :(得分:0)
嗯,答案有点晚,但我还是为了向社区提供而发布它。
我假设您正在尝试复制表(而不是部分数据)。我的回答是基于这个假设。
选择要完全复制到目标的表。然后点击编辑映射&#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)
)