使用脚本 (但不使用数据导入/导出,不使用备份还原,不使用数据库副本) 如何复制完整的表(模式)和数据)从同一服务器上的一个数据库到同一服务器上的另一个数据库?
我已经尝试过做我上面所说的斜体;但是,由于用户权限等原因,我无法使用这些方法。
也许这会奏效:
SELECT *
INTO newdb.dbo.newtable
FROM olddb.dbo.oldtable
但我想将它应用于每张桌子(大约100张桌子)。
答案 0 :(得分: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;
在这里,请看,我甚至为你templated。
答案 1 :(得分:1)
如果您有SSMS,则可以右键单击数据库并选择“Script Database As” - &gt; “创造至”。这将为您想要的所有对象(表,索引,视图等)生成DDL脚本
运行后,请使用:
SELECT 'INSERT newdb..'+name+' SELECT * FROM olddb..'+name FROM sys.tables
生成复制命令。如果您有计算列,则需要加入sys.columns表来过滤掉这些列。如果您有多个模式,则需要指定它们。您还需要根据外键层次结构对这些DML命令进行排序。只有100个表,手动执行此操作是可行的。
答案 2 :(得分:-4)
您使用的是Microsoft SQL Server Management Studio吗?如果是的话......
您可以使用脚本表格为... 选项,然后选择 CREATE TO 选项下的新查询编辑器表单。
从那里你应该能够更改表名称或目标数据库。
与此相结合,您可以使用此处的信息:https://stackoverflow.com/a/7515236/2543917来移动您的数据。
如果您需要更多实际的代码示例,请告诉我,我可以提供。