天天看點

使用Source Safe for SQL Server解決資料庫版本管理問題

簡介

    在軟體開發過程中,版本控制是一個廣為人知的概念。因為一個項目可能會需要不同角色人員的參與,通過使用版本控制軟體,可以使得項目中不同角色的人并行參與到項目當中。源代碼控制使得代碼可以存在多個版本,而不會将代碼庫變得混亂,典型的場景包括Bug修複、添加新功能、版本整合等。

     雖然在開發層面的版本控制軟體已經非常成熟,但目前國内還沒有專門針對資料庫層面的版本控制軟體來幫助不同角色的人員在資料庫層面進行團隊協作、變更代碼管理以及對資料庫的變更進行檢視和比對。在資料庫層面版本控制工具的缺乏可能會出現如下場景:

  • 無法在資料庫層面進行團隊協作:開發人員A對存儲過程的修改導緻開發人員B建立的存儲過程被覆寫,進而無法比對和追蹤
  • 開發人員-開發DBA-測試人員難以協作:SVN等版本工具是基于檔案的,很難在資料庫層面進行版本控制
  • 資料庫發生的變更難以追蹤:現有的技術無法追蹤由誰、在什麼時間、對資料庫修改了什麼,當發生由資料庫引起的報錯或性能下降時,難以排查
  • 無法記錄對資料庫變更的過程資産:資料庫變更的曆史記錄隻有資料庫運維人員了解,當該相關人員離職或調崗,這些過程資産難以繼承
  • 難以審計資料庫:現有的資料庫審計功能往往依賴于日志,對性能造成很大影響。
  • SQL腳本無法有效管理:現有的做法往往是将SQL以檔案形式儲存,無法有效管理和共享
  • 無法檢視被加密的資料庫對象:當需要對加密的資料庫對象進行修改時,如果無法找到對象定義的原始記錄,則必須重寫該對象
  • SVN建立和使用複雜:SVN使用流程對于資料庫人員過于繁瑣,為資料庫人員增加了額外的工作負擔

    由于資料庫是整個業務應用的核心,上述問題無論是在開發環境還是在生産環境如果得不到有效的解決,會造成生産力低下、過程資産無法得到管理、資料庫審查無法進行、難以排查由資料庫變更導緻的問題等情況。

    下面來介紹一下Source Safe for SQL Server如何解決該類問題。

軟體的安裝

    軟體的官網下載下傳完Source Safe的安裝包後一路下一步,安裝完成後打開Management Studio,在需要加入到源代碼控制器的某個資料庫伺服器上右鍵,在彈出菜單中選擇“添加資料庫到版本控制”,如圖1所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖1.将資料庫添加到版本控制

    然後設定相關的選項,如圖2所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖2.添加資料庫到版本控制相關設定

    現在再來看,整個資料庫都已經在版本控制之下了,如圖3所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖3.檢視受版本控制的資料庫

    至此,Source Safefor SQL Server就安裝配置完成了。

典型應用場景

  Source Safe可以解決下述問題:

開發團隊進行版本控制

    在一個開發團隊中,對于資料庫對象的每一次變更都會自動覆寫上一個版本,導緻上一個版本對象定義的丢失。比如說開發人員A建立了存儲過程“ProcA”,然後開發人員B修改了存儲過程“ProcA”,開發人員A建立的存儲過程将會被開發人員B所做的修改覆寫,造成之前定義存儲過程的丢失和無法復原。使用Source Safe可以輕松解決該類問題。

    通過圖4,我們看到存儲過程“ProcA”由開發人員“Jack”建立後,開發人員“CareySon”對其進行了修改,Source Safe可以完整的記錄由誰,在什麼時間,做了哪些修改,如圖所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖4.檢視存儲過程“ProcA”被修改的曆史記錄

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖5.檢視存儲過程 “ProcA”兩個版本的差異部分

開發裡程碑标記

    在開發過程中,往往需要對開發裡程碑進行疊代,每一個開發裡程碑導緻的資料庫對象變更都可以完整的被記錄和文檔化。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖6.裡程碑版本以及涉及到的對象變更

生産環境變更管理

    在生産環境中,程式的更新、程式或人為對資料庫對象的更改有可能導緻資料庫出現問題,例如應用程式報錯或資料庫性能下降。通過SourceSafe可以快速比較出資料庫之前版本和目前資料庫定義中存在差異的部分,并根據具體情況復原導緻資料庫出現問題的對象,進而快速排除錯誤并保證資料庫持續穩定運作。如圖7所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖7.選擇需要版本比較的對象

常用腳本管理

    無論是開發人員還是資料庫的運維人員,都會有常用腳本需要儲存。過去的做法往往是将SQL代碼以檔案的形式儲存,這樣既不友善使用,也不友善分類管理。利用Source Safe的代碼管理功能,可以友善的将SQL代碼的管理無縫內建到SQL Server Management Studio中。如圖8所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖8、使用Source Safe的腳本管理功能對SQL進行管理

    此外,Source Safe特别設定了預設檔案夾“工具欄快捷方式”,使用者可以将頻繁使用的SQL代碼置于此處,在該分類下的腳本會自動出現在Management Studio的工具欄中,如圖9所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖9、将常用腳本置于“工具欄快捷方式”中

對標明的對象進行版本歸類

    雖然Source Safe每次同步之後都會生成一個基于變更的版本号,但在某些特殊情況下,比如需要對庫中某些變更進行管理、對庫中的版本進行歸類的情況下會需要額外的标簽。如圖10所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

圖10、利用标簽标出某個業務版本涉及到的資料庫對象

與SVN的無縫內建

    SourceSafe的版本内容和曆史記錄可以直接導出到SVN、TFS、VSS中,進而打通資料庫版本控制和現有的SVN系統。在資料庫中我們對存儲過程dbo.TestProc做了三次變更,如圖11所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖11.對存儲過程的3次變更

    接下來将曆史記錄導出到SVN,如圖12所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖12.将SourceSafe記錄導出到SVN

    導出完成後,通過SVN用戶端軟體可以看到對應SQL檔案的在資料庫中對應圖10的三次變更,如圖13所示。

使用Source Safe for SQL Server解決資料庫版本管理問題

    圖13.SVN對應SourceSafe中的3次變更

軟體的下載下傳

    軟體的下載下傳可以在軟體的官網下載下傳,下載下傳位址請猛擊這裡(http://www.grqsh.com/products.htm?tab=sourcesafe-for-sql-server)。

繼續閱讀