2008-09-03 108 views
5

我很早就开始使用VS2008构建的Web应用程序。我有一台台式电脑(大部分工作都已完成)和一台笔记本电脑(偶尔便携),我使用AnkhSVN保持项目代码同步。保持我的开发数据库(SQL Server Express)同步的最佳方式是什么?保持多个环境中的开发数据库同步

我有一个SVN中的VS数据库项目,其中包含创建脚本,当模式更改时我将重新生成这些脚本。最初的想法是在任何事情发生变化时重新创建数据库,但它很快就会变成一种痛苦。另外,我会丢​​失我输入的所有样本行,以确保数据正确显示。

我正在考虑将.MDF和.LDF文件放在源代码控制下,但我怀疑SQL Server Express会优雅地处理它,如果我执行SVN更新并将文件从它下面取出,用新的副本替换。将一些大的二进制文件粘贴到源代码控制中似乎也不是一个优雅的解决方案,即使它只是一个一次性开发数据库。有什么建议么?

回答

3

除了数据库的CREATE脚本之外,为什么不维护默认数据或示例数据脚本呢?

这是我们为增加版本的应用程序而采取的一种方法,我们已经维护了超过2年的应用程序,并且它工作得非常好。使用默认数据脚本还允许您的QA测试人员使用您也有的数据重新创建错误?

你可能也想看看一个问题,我发布前一段时间:

Best tool for auto-generating SQL change scripts

3

您可以存储数据库的备份(.bak文件)而不是.MDF & .LDF文件。

use master 
go 

if exists (select * from master.dbo.sysdatabases where name = 'your_db') 
begin 
    alter database your_db set SINGLE_USER with rollback IMMEDIATE 
    drop database your_db 
end 

restore database your_db 
from disk = 'path\to\your\bak\file' 
with move 'Name of dat file' to 'path\to\mdf\file', 
    move 'Name of log file' to 'path\to\ldf\file' 
go 

你可以把上述的文本文件restore.sql脚本,并使用下面的命令从批处理文件调用它:

osql -E -i restore.sql 

这样
您可以使用以下脚本轻松地恢复你的数据库您可以创建脚本文件来自动全过程:

  • 从SVN 库或任何合适的斯道获取最新的数据库备份使用BAK文件
7

GE

  • 恢复当前分贝显然有许多方法可以解决这个,所以我将列出一些应该提供更好的基础建设上的链接。这些是我在过去试图让其他人加入时所引用的链接。

    然而,尽管如此,如果你不认为t帽子你承诺不足以实现某种类型的版本控制(手动或半自动),那么我强烈建议你检查以下内容:

    圣牛!谈论让生活变得轻松!我有一个项目离开了我,并有多个人在进行架构更改,并不得不保持多个环境同步。将Red Gate产品指向两个数据库并查看其差异,然后将其同步,这是微不足道的。

  • 1

    我们使用组合,从较高的环境中进行备份。
    以及使用ApexSql处理架构的初始设置。
    最近一直在使用亚音速迁移,作为一个编码,源代码控制,通过CI方式运行以获取更改脚本,还有由德克萨斯州公司开发的“tarantino”项目。

    大多数这些方法,特别是后者,可以安全地用于大多数测试数据之上。我特别喜欢自动化的过去2,因为我可以做出改变,并且下次有人得到最新的时候,他们只是运行“更新”,他们迎来了最新的。

    相关问题