首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >克隆数据库和备份是可能的吗?

克隆数据库和备份是可能的吗?
EN

Stack Overflow用户
提问于 2010-06-09 21:38:20
回答 7查看 182关注 0票数 4

我需要写一个工具来克隆数据库,而不是分离它并复制.mdf和.ldf,只备份它并恢复一个新创建的db不是更好吗?

有没有一种使用SQL从.bak创建数据库的方法?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-09 21:43:20

是的,您可以使用备份作为克隆数据库的一种方法。为此,您可以简单地使用RESTORE命令。

例如:

代码语言:javascript
复制
RESTORE DATABASE    DatabaseName
FROM DISK = N'C:\Path\To\Your\File.bak'

有关RESTORE命令参数的更多参考,请查看MSDN参考资料:Click!

票数 4
EN

Stack Overflow用户

发布于 2010-06-09 22:08:01

为了扩展Maximilian的回答,我建议使用MSBuild和MSBuild Community Tasks库的ExecuteDDL任务来自动化这个过程。

您可以从如下所示的SQL脚本(可能名为CloneDb.sql)开始:

代码语言:javascript
复制
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脚本中,您将创建一个包含如下序列的目标:

代码语言:javascript
复制
<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:“将在一个步骤中克隆您的数据库。为了方便起见,您可以将命令放在批处理文件中。

我为我当前的项目创建了一个更复杂的版本,一个由十几个开发人员组成的团队使用它来创建数据库的本地版本,我们的项目使用它来满足他们自己的开发需求。

票数 3
EN

Stack Overflow用户

发布于 2010-06-09 22:02:19

如前所述,您可以使用backup执行此操作。但是,还没有人提到在执行这些临时备份时使用COPY ONLY选项很重要,以避免考虑您的主备份

代码语言:javascript
复制
BACKUP DATABASE YourDB
TO DISK = 'C:\Backups\YourDB.bak'
WITH COPY_ONLY; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3006317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档