-9

使用脚本 (但是不使用数据导入/导出,不使用备份还原,不使用数据库副本) 如何将完整的表(架构和数据)从同一服务器上的一个数据库复制到同一服务器上的另一个数据库?

我已经尝试过上面斜体字的内容;但是,由于用户权限等原因,我无法使用这些方法。

也许这会起作用:

 SELECT *
 INTO newdb.dbo.newtable
 FROM olddb.dbo.oldtable

但我想将此应用于每张桌子(大约 100 张桌子)。

4

3 回答 3

8

如果您真的是系统管理员,我不明白备份和恢复有什么问题。

BACKUP DATABASE <DatabaseName, sysname, DatabaseName>
TO DISK=N'<backup_location, varchar, BackupLocation>.bak'
WITH INIT, FORMAT, COMPRESSION, COPY_ONLY

RESTORE DATABASE <NewDatabaseName, sysname, NewDatabaseName>
FROM DISK = N'<backup_location, varchar, BackupLocation>\
    <DatabaseName, sysname, DatabaseName>.bak'
WITH 
    MOVE '<DataFileName, sysname, DataFileName>' TO '<DataMDFPath, nvarchar(600), DataMDFPath>',
    MOVE '<LogFilePath, sysname, LogFilePath>' TO '<LogLDFPath, nvarchar(600), LogLDFPath>',
    REPLACE;

在这里,看,我什至为你做了模板

于 2013-07-03T19:10:49.387 回答
1

如果您有 SSMS,您可以右键单击数据库并选择“脚本数据库为”->“创建到”。这将为您想要的所有对象(表、索引、视图等)生成 DDL 脚本

运行这些之后,使用:

SELECT 'INSERT newdb..'+name+' SELECT * FROM olddb..'+name FROM sys.tables

生成复制命令。如果您有计算列,则需要加入 sys.columns 表以过滤掉这些列。如果您有多个模式,则需要指定它们。您还需要根据外键层次结构对这些 DML 命令进行排序。只有 100 个表,手动执行此操作是可行的。

于 2013-07-03T19:38:15.317 回答
-4

您使用的是 Microsoft SQL Server Management Studio 吗?如果是这样...


您可以使用Script Table As...选项并选择CREATE TO选项下的New Query Editor Form 。

从那里您应该能够更改表名或目标数据库。

结合此,您可以使用此处找到的信息:https ://stackoverflow.com/a/7515236/2543917以移动您的数据。

如果您需要更多实际的代码示例,请告诉我,我可以提供。

于 2013-07-03T18:16:40.650 回答