使用VS數據庫項目簡化數據庫開發的更新維護
在項目開發工作中,數據庫的更新維護一直是比較頭疼的問題,特別是在一個項目要部署到多個目的地,并且不同目的地的數據庫可能不一致的情況下,如果沒有較好的維護工具,將需要大量的人工維護工作,如果在開發工作中合理使用數據庫項目,將會簡化大量的人工維護工作。
VS 數據庫項目簡介
在 MSDN 網站上,有關于數據庫項目的詳細介紹,不再這里啰嗦。個人的看法就是,讓DBA(數據庫管理員)也參與進來,把對直接對數據庫的修改轉換成相應的 SQL 語句,結合源代碼管理,自動保留數據庫更改歷史,數據庫項目的部署工具可以自動對比目標數據庫與數據庫項目當前的差異,然后生成一個針對目標數據庫的更新文件,在目標數據庫上執行這個文件,即可將目標數據庫更新至當前版本。
VS 數據庫項目開發生命周期
1、建立項目環境
首先,DBA 創建一個數據庫項目并從成品數據庫中導入數據庫架構。然后,DBA 可以創建一個數據生成計劃,以便創建要在獨立開發環境中使用的測試數據。最后,DBA 將該數據庫項目簽入到版本控制中,以供團隊使用。 
2、數據庫項目迭代開發
每位數據庫專業人員都與版本控制同步其開發環境。他們可以在文件更改后簽出文件,并在獨立環境中對這些更改進行開發和測試。這樣,他們對自己的數據庫項目副本所做的更改僅會部署到各自的獨立開發環境中。當某位團隊成員生成實際測試數據并對數據庫的私有副本運行單元測試時,該團隊成員便將這些更改簽入到版本控制中。其他團隊成員將從版本控制中獲取經過測試的更改。
3、生成項目的每日版本
每日版本是通過與數據庫項目在版本控制系統中的最新測試版本進行同步而生成的。可以將該版本部署到測試數據庫中,然后對生成的測試數據運行單元測試。 
4、從項目環境中進行部署
到了將數據庫的某個版本部署到生產環境中時,DBA 將與版本控制系統中的標簽同步。然后,DBA 檢索數據庫項目的匹配文件、相關腳本和測試。接下來,DBA 生成 .dbschema 文件。從 .dbschema 文件,DBA 將生成部署腳本并根據需要進行手動修改,然后對臨時服務器執行測試部署。DBA 重復此過程,直到可以將該腳本部署到成品服務器為止。如果 DBA 更改了架構、預先部署腳本或后期部署腳本,則這些更改將被重新簽入到版本控制中。
數據庫項目開發示例
1、數據表字段修改
假設項目中有一個數據表 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()) )
2、部署到數據庫服務器
- 如果 VS 能夠直接連接到數據庫服務器并且可以直接更新的話(不需要經過 DBA 檢查),那么部署工作將十分簡單,在項目屬性頁的部署標簽頁, 將部署動作設置為“創建部署腳本并部署到數據庫”(如下圖所示),則直接在 VS 中執行部署命令即可。
- 如果不能直接更新數據庫的話,則需要將部署動作設置為“創建部署腳本”,生成部署腳本,然后由 DBA 或者實施人員負責更新。
注意事項
- 如果有多個數據庫服務器需要更新的話,由于這些數據庫的版本可能不同,因此必須針對每個數據庫服執行部署命令,這樣可以針對數據庫服務器的結構生成相應的部署腳本;
- 如果部署選項是選擇部署到文件的話,則執行部署命令只生成數據庫更新文件,也就是一個 SQL 文件,在目標服務器上執行這個文件時要注意選擇 SQLCMD 模式,否則將無法執行;
- 生成的數據庫更新文件只是針對特定目標數據庫的,最好不要拿到其它的數據庫服務器上運行,必須針對數據庫重新執行部署命令,生成一份新的部署文件進行更新;
張志敏所有文章遵循創作共用版權協議,要求署名、非商業 、保持一致。在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
本博客已經遷移到 GitHub , 圍觀地址: https://beginor.github.io/
浙公網安備 33010602011771號