我有一个数据库变更管理工作流程。它基于SQL脚本(因此,不是基于托管代码的解决方案)。
基本设置如下:
“启动数据库的过程是先运行所有初始化脚本,然后运行连续的迁移脚本。一个工具会处理版本需求等事项。”
“我的问题是,在这种设置中,是否也要维护这个?”
“这”指的是一个脚本目录(按对象类型分隔),表示旋转当前/最新版本数据库的创建脚本。
出于某种原因,我非常喜欢这个想法,但我无法具体证明它的必要性。我错过了什么吗?
优点包括:
- 对于开发和源控制,我们将拥有与我们习惯的每个文件一个对象相同的设置 - 对于部署,我们可以通过运行Initial+Migrate或从Current/运行脚本来将新的DB实例旋转到最新版本 - 对于开发,我们不需要运行DB实例才能进行开发。我们可以在Current/文件夹上进行“离线”开发。
缺点包括:
- 对于每个更改,我们需要更新Current/文件夹中的脚本,并创建Migration/文件夹中的迁移脚本
谢谢您提前的任何建议!
基本设置如下:
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
...
...
“这”指的是一个脚本目录(按对象类型分隔),表示旋转当前/最新版本数据库的创建脚本。
出于某种原因,我非常喜欢这个想法,但我无法具体证明它的必要性。我错过了什么吗?
优点包括:
- 对于开发和源控制,我们将拥有与我们习惯的每个文件一个对象相同的设置 - 对于部署,我们可以通过运行Initial+Migrate或从Current/运行脚本来将新的DB实例旋转到最新版本 - 对于开发,我们不需要运行DB实例才能进行开发。我们可以在Current/文件夹上进行“离线”开发。
缺点包括:
- 对于每个更改,我们需要更新Current/文件夹中的脚本,并创建Migration/文件夹中的迁移脚本
谢谢您提前的任何建议!