逐步解說:在隔離環境中執行反覆資料庫開發
更新:2007 年 11 月
在逐步解說:建立隔離資料庫開發環境中,您是以資料庫管理員的身分建立「資料庫專案」(Database Project),並從實際執行伺服器 (Production Server) 匯入「結構描述」(Schema) 和「資料庫物件」(Database Object) 定義。在第二個逐步解說中,您則建立了「資料庫單元測試」(Database Unit Test),以驗證現有功能並建立全新的基礎。在這個逐步解說 (本系列的第三個,也是最後一個) 中,您會執行常見的反覆開發工作:重新命名兩個資料庫資料行。您會在「隔離開發環境」(Isolated Development Environment) 中做這些變更,直到準備好共用變更為止,這對小組其他成員的風險會最低。
逐步解說將說明的工作包括:
如何使用「資料庫重構」(Database Refactoring) 重新命名資料行,縮短更新資料行的所有參考需要的時間,並降低發生錯誤的機率。
執行「資料庫單元測試」,驗證變更並不會影響現有的功能。
將變更簽入版本控制,提供給小組其他成員使用。
必要條件
您必須先安裝好 Visual Studio Team System Database 版,而且能存取 Microsoft SQL Server 2005 的 AdventureWorks 範例資料庫。此外,這個逐步解說假設您已經完成了逐步解說:建立隔離資料庫開發環境和逐步解說:建立隔離開發環境的基礎。
重新命名資料庫資料行
常見的開發工作包括重新命名資料庫物件。在這個逐步解說中,您會將 [HumanResources].[Employee] 資料表中的 EmployeeID 資料行重新命名為 EmployeeNumber。有數個外部索引鍵和預存程序參考了 EmployeeID 資料行。若要手動進行變更,就必須修改多個檔案。在做任何修改之前,請先確定資料庫專案是最新的版本。
若要取得資料庫專案的最新版本
在 [Team 總管] 中,展開包含資料庫專案的 Team 專案節點。
按兩下 [原始檔控制] 節點,開啟 [原始檔控制總管]。
在 [原始檔控制總管] 中,以滑鼠右鍵按一下您的資料庫專案,然後按一下 [取得最新的版本]。
包含資料庫專案的最新版本方案便會擷取至您的電腦上。
若要將 EmployeeID 重新命名為 EmployeeNumber
如果 AdvWorksSandbox 方案已在 [方案總管] 中開啟,請跳至步驟 4。
在 [檔案] 功能表上,指向 [開啟],並按一下 [專案/方案]。
[開啟專案] 對話方塊隨即出現。
按一下 AdvWorksSandbox 方案,然後按一下 [開啟] (這個方案的預設位置是在 My Documents\Visual Studio 2005\Projects\AdvWorksSandbox)。
AdvWorksSandbox 方案即會在 [方案總管] 中開啟。
開啟 [檢視] 功能表,然後按一下 [結構描述檢視]。
在 [結構描述檢視] 中,展開 AdvWorksSandbox 節點,然後展開 Tables 資料夾。
在 Tables 資料夾中,展開 HumanResources.Employee 資料表,然後展開 Columns 資料夾。
以滑鼠右鍵按一下 EmployeeID 資料夾,然後指向 [重構],再按一下 [重新命名]。
[重新命名] 對話方塊隨即出現,其中會顯示現有資料行名稱。
在 [新名稱] 中輸入 EmployeeNumber。
如果未選取 [預覽變更] 核取方塊,請選取並按一下 [確定]。
[ 預覽變更 - 重新命名] 對話方塊隨即出現,其中會顯示專案中的項目,這些項目都參考了正在重新命名的資料行。
按一下其中一項變更。
變更的詳細資料會出現在 [預覽變更] 中。
檢視變更之後,按一下 [套用] 套用變更。
修改的任何檔案會從版本控制簽出。
您可以在 [暫止的變更] 視窗中檢視暫止的變更。下列檔案應會出現在 [暫止的變更] 視窗中:
AWGenPlan.dgen
Employee.table.sql
Employee.PK_Employee_EmployeeID.sql
vSalesPerson.view.sql
uspGetManagerEmployees.proc.sql
vEmployee.view.sql
vEmployeeDepartmentHistory.view.sql
uspUpdateEmployeePersonalInfo.proc.sql
uspUpdateEmployeeHireInfo.proc.sql
uspUpdateEmployeeLogin.proc.sql
PurchaseOrderHeader.FK_PurchaseOrderHeader_Employee_EmployeeID.fkey.sql
Employee.FK_Employee_Employee_ManagerID.fkey.sql
EmployeePayHistory.FK_EmployeePayHistory_Employee_EmployeeID.fkey.sql
EmployeeDepartmentHistory.FK_EmploymentDepartmentHistory_Employee_EmployeeID.fkey.sql
JobCandidate.FK_JobCandidate_Employee_EmployeeID.fkey.sql
EmployeeAddress.FK_EmployeeAddress_Employee_EmployeeID.fkey.sql
SalesPerson.FK_SalesPerson_Employee_EmployeeID.fkey.sql
Employee.uEmployee.trigger.sql
執行資料庫單元測試
在做任何變更之後和簽入版本控制之前,請執行資料庫單元測試,確定應用程式仍能正常運作,然後才將變更提供給小組共用。
若要執行資料庫單元測試以找出任何可能的問題
指向 [測試] 功能表上的 [視窗],然後按一下 [測試檢視]。
[測試檢視] 視窗會列出數項測試。預設會建立名為 ManualTest1 和 TestMethod1 的測試。dbo_uspGetManagerEmployeesTest 和 dbo_ufpLeadingZeroTest 是在前一個逐步說明中建立的測試。
選取 dbo_uspGetManagerEmployeesTest 和 dbo_ufpLeadingZeroTest 的核取方塊,以滑鼠右鍵按一下其中一個,然後按一下 [執行選取範圍]。
檢視 [測試結果] 視窗中的結果。
資料庫專案會部署至隔離開發環境,接著產生測試資料,最後測試執行並通過。
將資料庫專案與實際執行環境比較
您可以針對更新的資料庫專案和實際執行資料庫,比較兩者的結構描述有何不同。由於只比較結構描述,而不是更新其中任一個,因此可以指定任一個做為比較的來源或目標。
若要將資料庫專案結構描述與實際執行資料庫比較
指向 [資料] 功能表上的 [結構描述比較],然後按一下 [新增結構描述比較]。
[新增結構描述比較] 對話方塊隨即出現。
接受 [來源結構描述] 的預設值。
這時指定的是資料庫專案 AdvWorksSandbox。
在 [目標結構描述] 的 Database 清單中,按一下最初匯入資料庫結構描述之來源 AdventureWorks 資料庫的連接,然後按一下 [確定]。
結構描述便會進行比較。兩者的差異之處應該只有您在這個逐步解說中所做的變更。
瀏覽結構描述之間的差異。完成時關閉 [結構描述比較] 視窗。
您現在可以提供變更給小組共用。
簽入變更
在確認所有變更都已準備好與其他小組成員共用時,即可將變更簽入版本控制。變更會簽入方案中,這通常包括資料庫專案、單元測試專案,以及任何相關聯的應用程式程式碼和應用程式單元測試。
若要簽入變更以供小組使用
指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。
[暫止的變更] 視窗隨即出現。
在 [註解] 中輸入 Renamed EmployeeID column。
在 [暫止的變更] 視窗中,按一下工具列上的 [簽入]。
[簽入] 進度對話方塊隨即出現,顯示資料庫專案和所包含的檔案簽入版本控制的進度。[方案總管] 中的圖示會更新,表示檔案已簽入版本控制。
後續步驟
針對小組要部署到實際執行環境的每個資料庫版本,上面的反覆程序會不斷地執行。每位開發人員都會在隔離環境中做變更、測試變更正確與否,然後再將更新簽入版本控制以供小組共用。將資料庫部署至實際執行環境的程序是直截了當的:
組成資料庫專案及其測試的檔案版本會標示,表示是屬於要部署的版本一部分。
取得標示的來源並產生建置指令碼。
視需要檢視和修改建置指令碼,將測試部署至開發用伺服器 (Staging Server)。每次部署之後,您可以將資料庫專案與開發用伺服器上的結構描述比較。
反覆測試建置指令碼並確定可以部署至實際執行環境之後,將修改過的建置指令碼部署到實際執行環境中。
如果您必須進行變更,但變更未反映在資料庫專案中,可以將這些更新從更新的實際執行伺服器匯入至資料庫專案中。
若要進一步了解 Database 版,可以針對每個功能範圍執行更深入的逐步解說。