2009-08-05 81 views
0

因为我设置了TortoiseSVN,所以今天刚刚发生。如何管理和跟踪数据库脚本。带TortoiseSVN的版本控制数据库脚本结构

在TFS中,您可以将脚本添加到变更集中。然后将变更集添加到任何任务中。

我已经使用了TFS和Subversion(乌龟),过去不记得管理这个的最好方法是什么。你是按项目名称和日期创建文件夹,还是创建一个名为Scripts的文件夹,并将文件名命名为项目名称?

我们在这个新地方没有真正的任务管理系统(因为过去只有一个编码器)。

回答

1

我们公司确实是这样的方式:

[repository-for-app] 
+ [trunk] 
    + [database-name] 
    + [build-scripts] 
     - [release_date_1] 
     - [...] (etc) 
    - [data] 
    + [metadata] 
     - [procedures] 
     - [roles] 
     - [tables] 
     - [triggers] 
     - [views] 
     - [...] (etc) 
- [tags] 
- [branches] 

因此,举例来说,内[程序]会有每CREATE OR ALTER PROCEDURE声明一个.sql文件。

[build-scripts]文件夹用于实际SQL修补程序脚本,应用于将数据库的一个版本带到下一个版本。

1

这里是我使用的是什么CVS:

创建一个名为“DB”,其下创建一个名为“UPG”另一个文件夹(升级)文件夹中。此文件夹包含每个版本的一个文件夹,例如“v100”,“v110”,“v120”等。

在每个版本文件夹中都有最初创建数据库的SQL脚本(“v100”),并在后续版本(“v110”等)中修补/升级数据库结构。

由于脚本之间经常存在依赖关系(即,在加载数据之前必须创建表等),因此每个脚本都使用数字前缀命名。例如:

v100 
    01_create_the_tables.sql 
    02_create_some_views.sql 
    03_load_some_config_data.sql 
    04_add_a_column_or_something.sql 
v110 
    01_create_some_new_table_and_migrate_data.sql 
    02_drop_that_unused_index.sql 
    03_set_up_fulltext_search.sql 
    04_grant_some_privileges.sql 

依此类推。

这个系统在过去10年左右的时间里运行良好,一个代码库被部署到几个不同的客户,所有客户都拥有多个测试,验收和生产数据库。使用脚本的文件夹和序列号的版本号可以轻松确定给定数据库的版本,以及应用哪些脚本以将其升级到客户端应用程序(即用户界面)所需的任何版本。