使用脚本 (但是不使用数据导入/导出,不使用备份还原,不使用数据库副本) 如何将完整的表(架构和数据)从同一服务器上的一个数据库复制到同一服务器上的另一个数据库?
我已经尝试过上面斜体字的内容;但是,由于用户权限等原因,我无法使用这些方法。
也许这会起作用:
SELECT *
INTO newdb.dbo.newtable
FROM olddb.dbo.oldtable
但我想将此应用于每张桌子(大约 100 张桌子)。
使用脚本 (但是不使用数据导入/导出,不使用备份还原,不使用数据库副本) 如何将完整的表(架构和数据)从同一服务器上的一个数据库复制到同一服务器上的另一个数据库?
我已经尝试过上面斜体字的内容;但是,由于用户权限等原因,我无法使用这些方法。
也许这会起作用:
SELECT *
INTO newdb.dbo.newtable
FROM olddb.dbo.oldtable
但我想将此应用于每张桌子(大约 100 张桌子)。
如果您真的是系统管理员,我不明白备份和恢复有什么问题。
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;
在这里,看,我什至为你做了模板。
如果您有 SSMS,您可以右键单击数据库并选择“脚本数据库为”->“创建到”。这将为您想要的所有对象(表、索引、视图等)生成 DDL 脚本
运行这些之后,使用:
SELECT 'INSERT newdb..'+name+' SELECT * FROM olddb..'+name FROM sys.tables
生成复制命令。如果您有计算列,则需要加入 sys.columns 表以过滤掉这些列。如果您有多个模式,则需要指定它们。您还需要根据外键层次结构对这些 DML 命令进行排序。只有 100 个表,手动执行此操作是可行的。
您使用的是 Microsoft SQL Server Management Studio 吗?如果是这样...
您可以使用Script Table As...选项并选择CREATE TO选项下的New Query Editor Form 。
从那里您应该能够更改表名或目标数据库。
结合此,您可以使用此处找到的信息:https ://stackoverflow.com/a/7515236/2543917以移动您的数据。
如果您需要更多实际的代码示例,请告诉我,我可以提供。