欢迎您来到中国万网客户服务中心!
客服导航
如果您在使用我们的产品中遇到问题,建议您首先在“常见问题”中查询解决方法;
如果没有找到该问题的解决方法,您可以在“问题搜索”中进行搜索;
如果搜索后没有找到满意答案,您可以“在线提问”,我们会在1个工作日内给您答复。
您现在的位置: 中国万网客服中心 >> 常见问题 >> 软件常见问题 >> 虚拟主机教程 >> 文章正文

Microsoft SQL Server 2005 导入导出数据,目标表的标识列不包含与源表相同的标识值

作者:客服中心    文章来源:本站原创    点击数:    更新时间:2008-9-5

症状
请考虑以下情形:
• 在 Microsoft SQL Server 2005,您使用 SQL Server Management Studio 到导入数据或将数据从一个源表导出到目标表。
• 源表和目标表都包括一个标识列。
• 您启用 启用标识插入 选项为源表。
• 在 SQL Server 导入和导出向导,您启用 多个表的优化 选项。
在这种情况下,完成导入或导出数据之后, 您将发现目标表的标识列不包含与源表相同的标识值。 而是,目标表的标识列包含 resequenced 的标识值。

注意 在 Microsoft SQL Server 2000 中不会发生此问题。

原因
发生此问题的原因在 SQL Server 导入和导出向导未将 IDENTITY _ INSERT 属性表如果启用了 多个表的优化 选项设置。 将 IDENTITY _ INSERT 属性可以一次设置为只有一个表。 如果您启用该向导中的 多个表的优化 选项,复制操作在同一时间执行的多个线程上的几个表。 因此,SQL Server 导入和导出向导不设置 IDENTITY _ INSERT 属性。

解决方案
若要解决此问题,不要启用 SQL Server 导入和导出向导中的 多个表的优化 选项。

如果执行不启用 的多个表优化 选项,数据操作可能需要较长的时间以完成。 如果您想导入或导出大量数据时保留标识值,我们建议您使用以下方法之一:
• 使用 bcp 实用工具与 –E 开关一起传输表。

例如,第一次运行一个命令类似于下面的命令以将数据从源表导出到一个.txt 文件:

Bcp.exe SourceTable 出 C:\FileName.txt-S.-T-c –E
然后,运行一个命令类似于以下命令以数据导入到目标表:

Bcp.exe DestinationTable 在 C:\FileName.txt-S.-T-c-E  
• 分离数据库,然后将数据库附加到目标服务器。

更多信息
如果您启用源表的 启用标识插入 选项,SQL Server 导入和导出向导应该执行 SET IDENTITY _ INSERT ON 语句每个表包含标识列。 然后,标识值插入到目标表后,SQL Server 导入和导出向导应该执行 SET IDENTITY _ INSERT OFF 语句。 但是,如果启用了 优化的多个表 选项这些操作不正确地发生。

状态
Microsoft 已确认这是"适用于"一节中列出的 Microsoft 产品中存在的问题。


返回上一页
中国万网旗下网站:中国万网 买麦网
Copyright © 2007 中国万网 版权所有
推荐使用1024×768分辨率浏览,并关闭窗口弹出阻止程序