Mar*_*nek 6 database sql-server redgate dbmigrate
我已经有了数据库变更管理工作流程.它基于SQL脚本(因此,它不是基于托管代码的解决方案).
基本设置如下所示:
Initial/
Generate Initial Schema.sql
Generate Initial Required Data.sql
Generate Initial Test Data.sql
Migration
0001_MigrationScriptForChangeOne.sql
0002_MigrationScriptForChangeTwo.sql
...
Run Code Online (Sandbox Code Playgroud)
启动数据库的过程是运行所有Initlal脚本,然后运行顺序迁移脚本.一个工具可以考虑版本控制要求等.
我的问题是,在这种设置中,保持这个是有用的:
Current/
Stored Procedures/
dbo.MyStoredProcedureCreateScript.sql
...
Tables/
dbo.MyTableCreateScript.sql
...
...
Run Code Online (Sandbox Code Playgroud)
"this"是指脚本目录(由对象类型分隔),表示用于旋转当前/最新版本数据库的创建脚本.
出于某种原因,我非常喜欢这个想法,但我无法具体证明它的需要.我错过了什么吗?
优点是:
缺点是:
提前感谢任何输入!
实际上,这是最好的方法.虽然听起来很麻烦,但它比使用SQL Compare工具或VSDB .schema文件部署的替代方案更好.我已经争论了一段时间的确切方法:版本控制和你的数据库.我的应用程序从初始脚本部署v1架构,然后为每个版本运行升级脚本.每个脚本都知道如何从版本N-1升级到N,只有那个.最终结果是当前版本.
最大的缺点是缺乏权威的.sql文件,以查找任何对象的当前版本(过程,表,视图等).但是,能够在任何先前版本上部署应用程序的优势,以及通过良好控制和测试的脚本进行部署的优势远远超过了缺点.
如果您对使用此部署过程感到不舒服(脚本部署v1.然后应用v1.1,然后v1.2 ......直到最后应用v4.5,当前),请记住:完全使用相同的过程由SQL Server在内部升级版本之间的数据库.附加较旧的数据库时,您会看到着名的"数据库正在运行从版本611到612的升级",您会看到升级是一步一步进行的,不会直接升级到当前版本651(或者是您当前的任何版本) ).升级也不会运行差异工具来部署v 651而不是v.611.这是因为最好的方法是你刚刚使用的方法,一次升级一步.
并且在发布一个相当倾斜的咆哮之后添加一个实际的问题答案(这是一个我有强烈意见的主题,你能说出来吗?):我认为有一个当前版本的脚本版本是有价值的,但我认为它应该是一个连续的集成构建过程可交付成果.换句话说,构建服务器应该构建当前数据库(使用升级脚本),然后,作为构建步骤,编写数据库脚本并使用当前版本模式脚本生成构建删除.但那些应仅用作搜索和代码检查的参考,而不是用作部署可交付成果,我的2C.
| 归档时间: |
|
| 查看次数: |
1133 次 |
| 最近记录: |