2009-08-05 76 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年左右的時間裏運行良好,一個代碼庫被部署到幾個不同的客戶,所有客戶都擁有多個測試,驗收和生產數據庫。使用腳本的文件夾和序列號的版本號可以輕鬆確定給定數據庫的版本,以及應用哪些腳本以將其升級到客戶端應用程序(即用戶界面)所需的任何版本。