逐步解說:部署資料庫重構變更
更新:2007 年 11 月
當您在 Visual Studio Team System Database 版中工作時,會變更資料庫的離線表示。若要讓線上資料庫認可這些變更,您必須建置及部署資料庫專案。不論您要將變更部署到開發資料庫、測試資料庫還是實際執行資料庫,其程序都是類似的。
注意事項: |
---|
所有資料庫類型的部署程序都很類似。不過,負責執行部署的人員可能不同。例如,在某些環境下,只有資料庫管理員 (DBA) 才有權限部署至實際執行資料庫。 |
在前面的逐步解說 (逐步解說:重新命名資料庫資料行),您已建立了資料庫專案、匯入 Northwind 資料庫結構描述,並重新命名資料行。在本逐步解說中,則將建置和部署該項變更。
必要條件
若要完成這個逐步解說,您將需要:
Database 版。
Microsoft SQL Server 2000 或 SQL Server 2005。
在逐步解說:重新命名資料庫資料行中建立的資料庫專案。
若要建置資料庫專案
開啟您在逐步解說:重新命名資料庫資料行中建立的資料庫專案 RefactorNorthwind。
按一下 [建置] 功能表上的 [建置方案],
[錯誤清單] 視窗中可能會顯示建置錯誤。例如,假設預存程序選取了資料行,但未限定其名稱,而您重新命名該資料行,預存程序中的名稱就不會更新。這會導致建置錯誤,因為預存程序現在會選取不存在的資料行名稱。為避免這類錯誤,請確定 Transact-SQL (T-SQL) 程式碼中的資料行名稱都是完整限定名稱。若要手動修正這類錯誤,您必須手動更新資料行名稱。例如,假設將資料行 Orders.ShippedDate 重新命名為 Orders.ShippedDateAndTime,則必須手動更新預存程序 Sales by Year。將預存程序從:
create procedure "Sales by Year" @Beginning_Date DateTime, @Ending_Date DateTime AS SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, ShippedDate) AS Year FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
變更為:
create procedure "Sales by Year" @Beginning_Date DateTime, @Ending_Date DateTime AS SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, Orders.ShippedDateAndTime) AS Year FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
若要設定專案的部署屬性
按一下 [方案總管] 中的資料庫專案 RefactorNorthwind。
按一下 [專案] 功能表上的 [RefactorNorthwind 屬性]。
專案屬性隨即出現。
按一下 [建置] 索引標籤。
按一下有標記 ... 的按鈕,即可顯示 [連接屬性] 對話方塊。
針對您要使用的資料庫設定其連接屬性,然後按一下 [確定]。
即會以正確的連接字串填入 [目標連接] 方塊。
警告: 請用測試資料庫或開發資料庫測試此部署。請不要使用實際執行資料庫測試此部署。
在 [目標資料庫名稱] 方塊中,輸入目標資料庫的名稱。
警告: 根據預設,[目標資料庫名稱] 方塊中會填入資料庫專案的名稱。如果資料庫專案名稱不是目標資料庫名稱,您必須變更這個欄位。
勾選 [為存在目標資料庫,但不存在資料庫專案中的物件產生 DROP 陳述式] 核取方塊。舉例來說,當您要重新命名資料表時,這個核取方塊會很重要。產生的部署指令碼中將會包含舊名稱資料表的 DROP 陳述式及新名稱資料表的 CREATE TABLE 陳述式。您可以清除 [為存在目標資料庫,但不存在資料庫專案中的物件產生 DROP 陳述式] 核取方塊,以防止具有舊名稱的資料表遭到卸除。有好幾個方法可避免這種情況下可能造成的資料遺失,這個方法只是其中一種。如需詳細資訊,請參閱在重新命名作業期間保護資料。
在 [檔案] 功能表上按一下 [全部儲存]。
按一下 [建置] 功能表上的 [建置方案],
部署指令碼是根據您剛設定的專案屬性而建置。組建的狀態會出現在 [輸出] 視窗中,而且 [組建:1 成功或最新狀態] 應該會出現在最後一行中。
若要部署資料庫專案
在 [檔案] 功能表上,將游標指向 [開啟],然後按一下 [檔案]。
[ 開啟檔案] 對話方塊隨即出現。
在 [檔案名稱] 方塊中,輸入下列位址,然後按一下 [開啟]。
YourPath\RefactorNorthwind\Sql\RefactoringDeploy.YourServer.Northwind.sql
在部署指令碼中尋找下列幾行:
DROP TABLE [dbo].[Orders]
和
CREATE TABLE [dbo].[Orders]
這幾行對應於您在前面逐步解說中所做的重構變更。這時您可以變更部署指令碼。例如,您可以刪除不想部署的 DROP 陳述式。如需詳細資訊,請參閱在重新命名作業期間保護資料。為方便本逐步解說使用,您可以保留原有的部署指令碼。
警告: 如果您變更部署指令碼,則必須從 T-SQL 編輯器執行指令碼,以手動方式部署。您不能使用部署命令來部署指令碼。
關閉部署指令碼。
在 [檢視] 功能表上按一下 [伺服器總管]。
[伺服器總管] 視窗隨即出現,目標資料庫會顯示在 [資料連接] 底下。如果目標資料庫沒有出現,請開啟 [工具] 功能表,然後按一下 [連接至資料庫],加入目標資料庫的連接。
在 [伺服器總管] 中,依序展開目標資料庫、[資料表] 節點以及 Orders 資料表。
ShippedDate 資料行會以舊有名稱出現。
按一下 [方案總管] 中的資料庫專案 RefactorNorthwind。
在 [建置] 功能表上按一下 [部署]。您也可以用滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [部署]。
警告: 請用測試資料庫或開發資料庫執行此部署。請不要使用實際執行資料庫執行此部署。
即會使用此部署指令碼將資料庫專案部署到目標資料庫。部署的狀態會出現在 [輸出] 視窗中,而且 [部署成功] 應該會出現在最後一行。
在 [伺服器總管] 中,以滑鼠右鍵按一下 [資料表] 節點,然後按一下 [重新整理]。
ShippedDate 資料行會以新名稱 ShippedDateAndTime 出現。