如何以编程方式创建数据库的克隆

时间:2013-11-07 05:56:07

标签: c# asp.net sql sql-server-2008

我想以编程方式创建数据库的克隆。我的要求是,我有一个数据库的默认主模板,我想在我的应用程序执行时创建一个新数据库,这个新数据库将是现有主数据库的副本,只是它的名称将被更改。

2 个答案:

答案 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)。虽然我没有探讨过任何这些选择。