我想以编程方式创建数据库的克隆。我的要求是,我有一个数据库的默认主模板,我想在我的应用程序执行时创建一个新数据库,这个新数据库将是现有主数据库的副本,只是它的名称将被更改。
答案 0 :(得分:2)
一种选择是创建master数据库的备份,并使用脚本以不同的名称将其还原:
RESTORE DATABASE [CopyOfMaster] FROM
DISK = N'C:\Temp\Master.bak'
WITH FILE = 1,
MOVE N'Master' TO N'C:\Temp\copy.mdf',
MOVE N'Master_log' TO N'C:\Temp\copy_log.ldf',
NOUNLOAD
GO
参数说明:
DISK
- 备份文件的路径和文件MOVE
- 原始数据库中的每个文件组都需要一行。您为每个文件组指定新文件名和路径更多阅读MSDN
答案 1 :(得分:1)
您需要编写主模板数据库的脚本并将脚本保存到文件中。使用SQL Server Management Studio,右键单击主模板数据库,然后选择“脚本数据库为”。您必须将脚本中的数据库名称更改为某个标识符,您可以执行字符串替换以在运行时更改名称。
在您的代码中,您可以加载脚本文件并执行以使用其他名称创建数据库。您可以使用SqlCommand来执行加载的脚本(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx)
您还可以使用命令行'sqlcmd'实用程序或SQL Server管理对象(SMO)。虽然我没有探讨过任何这些选择。