MSSQL导入/导出/复制IDENTITY_INSERT问题

时间:2013-01-29 13:55:50

标签: sql sql-server

使用MS SQL Server Management Studio 2008.
我有一个db(比如ip 10.16.17.10,叫做 db1 )和第二个(比如ip 10.16.17.25,叫做 db2 )。

我正在尝试将数据表(及其内容)从 db1 复制到 db2
我有两个数据库(但在db2中为空)。

问题是无论我如何复制/导出/导入,无论我在 MS SQL Server Management Studio 2008 中设置什么选项,当我点击'table' - >'Design'(on db2 )它总是说“身份识别:NO”甚至db1表都有它。

db1 我转到'任务' - >'导出' - >'source / db'和'destination / db' - >'编辑映射' - >'启用identity插入'并单击它。

但没有快乐。总是在没有它的情况下出口。
我在 db2 的IMPORT上尝试类似的东西。类似的东西,如果我使用COPY。

我已经阅读了很多关于STACKOVERFLOW的文章,他们都建议将IDENTITY_INSERT设置为ON,但是当我在下面运行时:

SET IDENTITY_INSERT [dbo].[mytable] ON

该表要么尚未存在,要么已经复制而没有标识设置,请参阅错误:

does not have the identity property. Cannot perform SET operation.

我已经尝试将其设置为 db2 的属性(在数据库属性下),但是当我复制/导入/导出时无法正常工作。

感谢任何帮助,因为到目前为止,许多StackOverflow文章似乎都比我更容易。

我打算在这个数据库中为另外50个左右的表执行此操作,因此我希望找到一种不涉及为每个表运行脚本的方法。

感谢

4 个答案:

答案 0 :(得分:4)

使用导出数据向导将数据从一个表复制到另一个表的过程不会复制架构的所有方面(如标识和自动增量)。如果要复制模式,请将表脚本编写为create语句,将名称更改为db2,然后创建它。然后,您应该能够运行带有标识插入选项的导出/导入向导,并插入到复制旧表模式的新表中。

答案 1 :(得分:2)

使用MS SQL Management Studio完成排序。

感谢@kevin提供有关导入数据和导出数据的帮助。模式不会传输,但是一旦模式启动它们就是传输数据的最佳方法。

找到使用下面的MASS导入/导出db表模式的最佳方法(保存的SQL创建脚本到文件):

任务 - >生成脚本 - >所有表格到文件 - >带身份

db2 上为架构运行200kb SQL文件。

然后从 db1 运行导入数据 db2

完成,维护所有Identity_Inserts。

感谢您的帮助

答案 2 :(得分:1)

根据Error message,我认为您的表 没有IDENTITY列。在执行[dbo].[mytable]之前,请确保IDENTITY column确实有SET IDENTITY_INSERT

SET IDENTITY_INSERT [dbo].[mytable] ON

DEMO1(当 无身份列 时,尝试设置身份

--Error    
'Table 'T' does not have the identity property. Cannot perform SET operation.: SET IDENTITY_INSERT T ON'

DEMO2(当 是标识列 时,尝试设置标识为开启)

--No Errors

答案 3 :(得分:1)

请按照以下步骤操作:

从db1我转到'任务' - >'导出' - >'source / db'和'destination / db' - >'编辑映射' - >'启用标识插入'和编辑SQL - >您将能够看到Table的查询结构。

在例如查询中。 ID int NOT NULL,执行下一步ID int NOT NULL IDENTITY(1,1) 然后继续。

我打赌它会奏效。