因此,最近我正在做的一个项目中,我们一直在努力使解决方案的代码库和相关的数据库模式保持同步(Database = SQL Server2008)。
数据库更改经常发生(添加列、约束、关系等),因此人们经常会从源代码管理中“获取最新”,然后发现他们也需要重建数据库(有时他们忘记了重建数据库)。
我们使用的不是VSTS: Database Edition (DataDude),而是带有脚本(批处理文件)的标准Visual Studio数据库项目,该脚本从T-SQL脚本拆除并重新创建数据库。该解决方案是一个以LINQ to SQL为底层对象关系映射的.Net & ASP.net解决方案。
有没有人有办法(不管是不是自动的)让每个人都跟上最新的数据库模式?
与MSBuild的持续集成是一种选择,但它只能帮助拾取提交的任何破坏性更改,在我上面突出显示的场景中它并没有真正的帮助。
我们正在使用Team Foundation Server,如果这有帮助的话..
发布于 2009-01-15 06:11:34
好吧,虽然这不是整个解决方案,但您应该在应用程序代码中包含一个链接到数据库的断言,以断言使用了正确的模式,这样至少它变得显而易见,并且您可以避免无声的错误和人们抱怨事情突然变得疯狂。
至于模式版本,您可以使用一些特定于数据库的功能(如果可用),但我个人更喜欢声明一个模式版本表并将版本号保存在其中,这样它就可以移植,并且可以使用简单的select语句进行检查
发布于 2009-01-15 05:58:51
我们尝试从创建脚本开始工作。
也就是说,除非脚本经过测试并签入源代码管理,否则对数据库的更改是未经授权的。
但这假设数据库团队与您的应用团队集成在一起,这在大型项目中通常不是这样的……
(我很想“费很大的劲”回答这个问题)
编辑:如果您的流程不正确,工具将无法帮助您。
发布于 2009-01-15 10:28:30
看看DB Ghost -您可以使用脚本程序在几秒钟内创建一个dbp,然后使用变更管理器管理所有数据库代码。www.dbghost.com
这正是DB Ghost设计用来处理的。
https://stackoverflow.com/questions/445800
复制相似问题