使用VS資料庫專案簡化資料庫開發的更新維護

2022-01-16 07:44:42 字數 2249 閱讀 1603

在專案開發工作中,資料庫的更新維護一直是比較頭疼的問題,特別是在乙個專案要部署到多個目的地,並且不同目的地的資料庫可能不一致的情況下,如果沒有較好的維護工具,將需要大量的人工維護工作,如果在開發工作中合理使用資料庫專案,將會簡化大量的人工維護工作。

在 msdn **上,有關於資料庫專案的詳細介紹,不再這裡囉嗦。個人的看法就是,讓dba(資料庫管理員)也參與進來,把對直接對資料庫的修改轉換成相應的 sql 語句,結合源**管理,自動保留資料庫更改歷史,資料庫專案的部署工具可以自動對比目標資料庫與資料庫專案當前的差異,然後生成乙個針對目標資料庫的更新檔案,在目標資料庫上執行這個檔案,即可將目標資料庫更新至當前版本。

首先,dba 建立乙個資料庫專案並從成品資料庫中匯入資料庫架構。然後,dba 可以建立乙個資料生成計畫,以便建立要在獨立開發環境中使用的測試資料。最後,dba 將該資料庫專案簽入到版本控制中,以供團隊使用。

每位資料庫專業人員都與版本控制同步其開發環境。他們可以在檔案更改後簽出檔案,並在獨立環境中對這些更改進行開發和測試。這樣,他們對自己的資料庫專案副本所做的更改僅會部署到各自的獨立開發環境中。當某位團隊成員生成實際測試資料並對資料庫的私有副本執行單元測試時,該團隊成員便將這些更改簽入到版本控制中。其他團隊成員將從版本控制中獲取經過測試的更改。

每日版本是通過與資料庫專案在版本控制系統中的最新測試版本進行同步而生成的。可以將該版本部署到測試資料庫中,然後對生成的測試資料執行單元測試。

到了將資料庫的某個版本部署到生產環境中時,dba 將與版本控制系統中的標籤同步。然後,dba 檢索資料庫專案的匹配檔案、相關指令碼和測試。接下來,dba 生成 .dbschema 檔案。從 .dbschema 檔案,dba 將生成部署指令碼並根據需要進行手動修改,然後對臨時伺服器執行測試部署。dba 重複此過程,直到可以將該指令碼部署到成品伺服器為止。如果 dba 更改了架構、預先部署指令碼或後期部署指令碼,則這些更改將被重新簽入到版本控制中。

假設專案中有乙個資料表 mapdocument , 現有兩個字段, id 以及 name ,對應的表語句如下:

create table [dbo].[mapdocument]

( [id] int not null identity(1,1),

[name] nvarchar(50) null

)

現在需要新增兩個字段,owner 和 createdate,將上面的 sql 語句改成下面的樣子:

create table [dbo].[mapdocument]

( [id] int not null identity(1,1),

[name] nvarchar(50) null,

[owner] nvarchar(20) not null default (『anonymous』),

[createdate] datetime not null default (getdate())

)

如果 vs 能夠直接連線到資料庫伺服器並且可以直接更新的話(不需要經過 dba 檢查),那麼部署工作將十分簡單,在專案屬性頁的部署標籤頁, 將部署動作設定為「建立部署指令碼並部署到資料庫」(如下圖所示),則直接在 vs 中執行部署命令即可。

如果不能直接更新資料庫的話,則需要將部署動作設定為「建立部署指令碼」,生成部署指令碼,然後由 dba 或者實施人員負責更新。

如果有多個資料庫伺服器需要更新的話,由於這些資料庫的版本可能不同,因此必須針對每個資料庫服執行部署命令,這樣可以針對資料庫伺服器的結構生成相應的部署指令碼;

如果部署選項是選擇部署到檔案的話,則執行部署命令只生成資料庫更新檔案,也就是乙個 sql 檔案,在目標伺服器上執行這個檔案時要注意選擇 sqlcmd 模式,否則將無法執行;

生成的資料庫更新檔案只是針對特定目標資料庫的,最好不要拿到其它的資料庫伺服器上執行,必須針對資料庫重新執行部署命令,生成乙份新的部署檔案進行更新;

行式資料庫 VS 列式資料庫

1 行式資料庫 2 列式資料庫 1 行式更適合oltp,查詢乙個記錄的所有列。列式更適合olap,非常適合於在資料倉儲領域發揮作用,比如資料分析 海量儲存和商業智慧型 涉及不經常更新的資料。由於設計上的不同,列式資料庫在並行查詢處理和壓縮上更有優勢。而且資料是以列為單元儲存,完全不用考慮資料建模或者...

簡單使用資料庫資料庫

查詢 注釋 查詢公式 select 欄位名字1 別名,欄位名字2 as 別名.from 表名 執行順序 from select確定結果集 查詢dept表中的所有資訊 select from dept 查詢雇員表中所有員工的員工編號,員工姓名,上級編號 要查詢的資料 empno,ename,mgr 條...

資料倉儲 VS 資料庫

資料倉儲 data warehouse 是乙個面向主題的 subject oriented 整合的 integrate 相對穩定的 non volatile 反映歷史變化 time variant 的資料集合,用於支援管理決策。1 面向主題 指資料倉儲中的資料是按照一定的主題域進行組織。2 整合 指...