我需要写一个工具来克隆数据库,而不是分离它并复制.mdf和.ldf,只备份它并恢复一个新创建的db不是更好吗?
有没有一种使用SQL从.bak创建数据库的方法?
发布于 2010-06-09 21:43:20
是的,您可以使用备份作为克隆数据库的一种方法。为此,您可以简单地使用RESTORE命令。
例如:
RESTORE DATABASE DatabaseName
FROM DISK = N'C:\Path\To\Your\File.bak'有关RESTORE命令参数的更多参考,请查看MSDN参考资料:Click!
发布于 2010-06-09 22:08:01
为了扩展Maximilian的回答,我建议使用MSBuild和MSBuild Community Tasks库的ExecuteDDL任务来自动化这个过程。
您可以从如下所示的SQL脚本(可能名为CloneDb.sql)开始:
USE master
GO
RESTORE DATABASE dbname
FROM DISK = 'SOURCEDIR\dbname.bak'
WITH REPLACE, FILE = 1,
MOVE N'dbname' TO N'DBDEVICEDIR\dbname.mdf',
MOVE N'dbname_log' TO N'DBDEVICEDIR\dbname_log.LDF',
NOUNLOAD,
STATS = 10
GO在MSBuild脚本中,您将创建一个包含如下序列的目标:
<FileUpdate Files="$(BuildDir)\CloneDb.sql"
Regex="SOURCEDIR"
ReplacementText="$(SqlSafeActualBuildDir)\dbdeploy" />
<FileUpdate Files="$(BuildDir)\CloneDb.sql"
Regex="DBDEVICEDIR"
ReplacementText="$(SqlSafeActualBuildDir)\dbdevices" />
<ExecuteDDL Files="$(BuildDir)\CloneDb.sql" ConnectionString="Server=$(LocalDbServer);Database=master;Trusted_Connection=True;" />准备就绪后,从Visual Studio命令行运行"msbuild.exe CloneDb.proj /t:“将在一个步骤中克隆您的数据库。为了方便起见,您可以将命令放在批处理文件中。
我为我当前的项目创建了一个更复杂的版本,一个由十几个开发人员组成的团队使用它来创建数据库的本地版本,我们的项目使用它来满足他们自己的开发需求。
发布于 2010-06-09 22:02:19
如前所述,您可以使用backup执行此操作。但是,还没有人提到在执行这些临时备份时使用COPY ONLY选项很重要,以避免考虑您的主备份
BACKUP DATABASE YourDB
TO DISK = 'C:\Backups\YourDB.bak'
WITH COPY_ONLY; https://stackoverflow.com/questions/3006317
复制相似问题