【发布时间】:2011-01-31 00:20:57
【问题描述】:
我有一个数据库变更管理工作流程。它基于 SQL 脚本(因此,它不是基于托管代码的解决方案)。
基本设置如下所示:
Initial/
Generate Initial Schema.sql
Generate Initial Required Data.sql
Generate Initial Test Data.sql
Migration
0001_MigrationScriptForChangeOne.sql
0002_MigrationScriptForChangeTwo.sql
...
启动数据库的过程是运行所有初始脚本,然后运行顺序迁移脚本。一个工具可以处理版本控制要求等。
我的问题是,在这种设置中,维护它是否有用:
Current/
Stored Procedures/
dbo.MyStoredProcedureCreateScript.sql
...
Tables/
dbo.MyTableCreateScript.sql
...
...
我所说的“this”是指一个脚本目录(按对象类型分隔),它代表用于启动 当前/最新 版本的数据库的创建脚本。
出于某种原因,我真的很喜欢这个想法,但我无法具体证明它的必要性。我错过了什么吗?
优点是:
- 对于开发和源代码控制,我们将拥有与以往相同的每个文件的对象设置
- 对于部署,我们可以通过运行 Initial+Migrate 或从 Current/运行脚本将新数据库实例启动到最新版本。
- 对于开发,我们不需要运行数据库实例来进行开发。我们可以对 Current/ 文件夹进行“离线”开发。
缺点是:
- 对于每次更改,我们都需要更新 Current/ 文件夹中的脚本,并创建一个迁移脚本(在 Migration/ 文件夹中)
提前感谢您的任何意见!
【问题讨论】:
-
如果重要的话,我使用的是 Red Gate 工具堆栈(SQL Compare Pro 等),尽管我认为上述过程与工具无关。
-
这应该是社区维基。
-
如果您已经在使用 Red Gate 工具,您可能会对 SQL 源代码控制感兴趣,它可以作为早期访问版本进行尝试。请参阅red-gate.com/Products/SQL_Source_Control/index.htm 我很乐意进一步讨论您的要求并确定是否可以使 SQL 源代码控制为您有效地工作。您能否给我发电子邮件(我是 Red-gate dot com 的 David.Atkinson 的产品经理),我们可以进一步讨论这个问题吗?
-
它的早期访问已经结束,SQL Source Control 1.0 现已发布! red-gate.com/products/SQL_Source_Control/index.htm
标签: sql-server database redgate dbmigrate