資料庫的版本控制與**版本控制的區別在於資料庫中的生產資料是現場創造的,當我們的表結構發生改變時,不能直接用drop table然後再create table,因為這樣會導致生產資料丟失。而**則完全由開發人員創造,可以用完全覆蓋的方式公升級。由於這點不同,致使資料庫在版本控制的過程中必然要採 用與**不同的方法。
軟體過程有乙個過程方法叫迭代過程。對資料庫的版本化,我們也可以採用這種類似的方法------後乙個版本的指令碼依賴於前乙個版本的指令碼,即當你要把數 據庫公升級到第n個版本時,你必須先把資料庫公升級到第(n-1)個版本,以此遞迴。
我對對於資料庫版本化的具體思路如下:
1.只存在乙個基線版本;
2.在基線版本後的修改都是修正版本;
3.版本號遵從的格式通常是:主版本號.次版本號.修正號
修正版本sql指令碼的命名規則(表,檢視,儲存過程,使用者,角色,規則,預設值, 使用者定義的資料型別,使用者定義的函式,全文目錄);
a.涉及表、檢視、儲存過程、觸發器的增加 版本號為:v1.1.0.0。(主版本號不變,次版本號加一,修正號歸零)
b.涉及表、檢視、儲存過程、觸發器的更改、刪除 版本號為:v1.2.1.0。(主版本號和次版本號不變,修正號加一)
c.向表中增加、刪除初始化資料的變化 版本號為:v1.2.1.1。(在修正號後增加乙個標識)
4.sql指令碼的格式:
每乙個版本號為乙個目錄,目錄下分別存放處理表、檢視、儲存過程等的sql指令碼;
/database
├─v1.0.0.0
│ full-text.sql
│ procedures.sql
│ tables.sql
│ views.sql
│├─v1.1.0.0
│ tables.sql
│ views.sql
│├─v1.1.1.0
│ full-text.sql
│ procedures.sql
│ tables.sql
│ views.sql
│├─v1.1.1.1
│ tables.sql
│└─v1.1.2.0
full-text.sql
procedures.sql
tables.sql
views.sql
5.關於資料庫中的版本說明及更新記錄:
在每個資料庫中新建乙個表,名稱為dbversion,用於記錄資料庫經歷的版本記錄以及最新的版 本資訊;
可用於sql server 2000的sql**
if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[dbversion]') and objectproperty(id, n'isusertable') = 1)
drop table [dbo].[dbversion]
go create table [dbo].[dbversion] (
[db_id] [int] identity (1, 1) not null ,
[db_version] [varchar] (16) collate chinese_prc_ci_as not null ,
[db_update_time] [datetime] not null ,
[db_remark] [varchar] (255) collate chinese_prc_ci_as null
) on [primary]
go 6.編寫程式以實現以下功能:
讀取database目錄的各個版本中的sql檔案,以實現公升級或者新建資料。
對於公升級資料庫需要能 夠根據dbversion表中的資訊自動選擇需要匯入的sql檔案;或者提示使用者當前可以公升級到哪一些版本。
同時還需要有校驗database中 版本的檔案是否完整(包括版本完整和檔案完整,這就需要存在乙個校驗檔案);
資料庫版本控制問題
現在實際上已經有很多的工具可以監控資料庫的變更和維護資料庫的版本,比如說 sqlsourcesafe sql scriptsafe query commander,它們都是挺有效的。不過我熟悉的是sqlsourcesafe,就簡單介紹一下吧,希望對大家有用。sqlsourcesafe 是乙個基於vi...
資料庫的版本控制是必須的
摘自 程式設計師開發利器 源 管理的十條建議 資料庫的版本控制是必須的 這是有很多人想做,但是覺得很困難而做不到的一點。這裡的問題是,很多應用沒有資料庫根本無法執行。所以如果你不把資料庫加入版本控制的話,你的應用是不完整的。大部分的版本控制系統只針對檔案系統工作,例如 html,css,配置檔案等等...
資料庫敏捷版本控制之3個資料庫策略
背景 我們是乙個不大的軟體開發團隊,但是客戶遍布全球 關於資料庫的版本控制前段時間一直沒找到特別好的方式,通過思考和不斷實踐,最近總結了乙個不錯的方法,特分享給大家 做好資料庫的版本控制目的 同時保證 開發 測試 客戶基線控制 資料安全性的需要 1號資料庫 開發 主要用於開發使用,所以能持續整合最新...