2

我有一个8 GB的数据库DocData大小。我想将三个表从DocData移动到另一个数据库DocData2,而不使用这些表中的导入导出向导和标识列。我想使用脚本移动它并使用标识列复制数据。其中一张表的大小是 7 GB。

我正在使用这个查询

CREATE TABLE [DocData2].[dbo].DocumentPages AS 
SELECT  * FROM [DocData].[dbo].[DocumentPages]

但我收到以下错误。

Incorrect syntax near the keyword 'SELECT'.
4

5 回答 5

3

从波尔

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  ON

在这里插入

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  OFF
于 2012-05-01T11:25:02.250 回答
3

您需要运行以下语句。

假设

  • 您的两个数据库都存在于同一台服务器上。
  • DocumentPages目标数据库中不存在您的目标表DocData2

脚本

SELECT  *   
INTO    [DocData2].[dbo].[DocumentPages] 
FROM    [DocData].[dbo].[DocumentPages]

你的问题

您不能使用问题中的脚本创建表。CREATE TABLE没有任何选项可以接受 SELECT 输出以这种方式创建新表。

于 2012-05-01T11:47:32.523 回答
3

请使用此脚本。

SELECT * INTO [DocData2].[dbo].DocumentPages FROM [DocData].[dbo].[DocumentPages]

阅读此处以了解有关 SELECT INTO 的更多信息

于 2012-05-01T12:14:24.007 回答
0

如果两个数据库都在同一台服务器上,您只能这样做。如果它们位于不同的服务器上,则需要使用其他技术,例如链接服务器或 SSIS 包。

话虽如此,您需要先创建 [DocData2].[dbo].DocumentPages 表,然后将数据从一个表复制到另一个表

insert into [DocData2].[dbo].[DocumentPages]
select * from  [DocData].[dbo].[DocumentPages]
于 2012-05-01T12:02:05.060 回答
0

如果你想要一个精确的副本,然后为表编写脚本(右键单击对象浏览器中的表,你将看到创建脚本的选项)及其所有索引、约束等(你可能需要单独编写索引) 然后通过运行脚本创建表,然后像@Diego 所做的那样编写一个插入语句(仅指定列,插入应该指定列)。

当然,如果您正确地管理您的数据库,您将已经在源代码管理中拥有该脚本。至少现在开始使用这些脚本执行此操作。

于 2012-05-01T13:54:18.280 回答