4

使用 MS SQL Server Management Studio 2008。
我有一个数据库(例如 ip 10.16.17.10 并称为db1)和第二个数据库(例如 ip 10.16.17.25 称为db2)。

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

问题是无论我如何复制/导出/导入,无论我在MS SQL Server Management Studio 2008中设置什么选项,当我单击“表”->“设计”(在db2上)时,它总是说“身份规范:否”即使 db1 表也有它。

db1我转到 'Tasks'->'export'->'source/db' 和 'destination/db'->'Edit Mapping'->'Enable identity Insert' 并单击它。

但没有喜悦。总是在没有它的情况下导出。我在db2
上从 IMPORT 尝试类似的事情。如果我使用复制,类似的事情。

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

SET IDENTITY_INSERT [dbo].[mytable] ON

该表尚不存在或已复制而没有标识设置,因此请参阅错误:

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

我已经尝试将它设置为db2的属性(在数据库属性下),但是当我复制/导入/导出时永远不会工作。

非常感谢这里的任何帮助,因为到目前为止,很多 StackOverflow 文章似乎都比我更轻松。

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

谢谢

4

4 回答 4

5

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

于 2013-01-29T14:16:25.310 回答
3

最后使用 MS SQL Management Studio 解决了这个问题。

感谢@kevin 在导入数据和导出数据方面的帮助。架构不会跨过传输,但是一旦架构启动,它们是传输数据的最佳方式。

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

任务->生成脚本->要归档的所有表->启用身份

在db2上为模式运行 200kb SQL 文件。

然后运行​​Import Data from db1 to db2

完成,维护所有 Identity_Inserts。

感谢帮助

于 2013-01-29T14:53:33.483 回答
1

根据错误消息,我认为您的表没有IDENTITY。确保在执行之前[dbo].[mytable]确实有一个.IDENTITY columnSET IDENTITY_INSERT

SET IDENTITY_INSERT [dbo].[mytable] ON

DEMO1(尝试在没有标识列时将标识设置为 ON )

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

DEMO2 (当有标识列时尝试将标识设置为ON )

--No Errors
于 2013-01-29T14:03:00.443 回答
1

请按照以下步骤操作:

从 db1 我转到 'Tasks'->'export'->'source/db' 和 'destination/db'->'Edit Mapping'->'Enable identity Insert' 和 Edit SQL -> 你将能够看到查询表的结构。

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

我敢打赌它会奏效。

于 2013-01-29T14:29:42.730 回答