共用方式為


逐步解說:部署資料庫重構變更

更新:2007 年 11 月

當您在 Visual Studio Team System Database 版中工作時,會變更資料庫的離線表示。若要讓線上資料庫認可這些變更,您必須建置及部署資料庫專案。不論您要將變更部署到開發資料庫、測試資料庫還是實際執行資料庫,其程序都是類似的。

注意事項:

所有資料庫類型的部署程序都很類似。不過,負責執行部署的人員可能不同。例如,在某些環境下,只有資料庫管理員 (DBA) 才有權限部署至實際執行資料庫。

在前面的逐步解說 (逐步解說:重新命名資料庫資料行),您已建立了資料庫專案、匯入 Northwind 資料庫結構描述,並重新命名資料行。在本逐步解說中,則將建置和部署該項變更。

必要條件

若要完成這個逐步解說,您將需要:

若要建置資料庫專案

  1. 開啟您在逐步解說:重新命名資料庫資料行中建立的資料庫專案 RefactorNorthwind。

  2. 按一下 [建置] 功能表上的 [建置方案],

  3. [錯誤清單] 視窗中可能會顯示建置錯誤。例如,假設預存程序選取了資料行,但未限定其名稱,而您重新命名該資料行,預存程序中的名稱就不會更新。這會導致建置錯誤,因為預存程序現在會選取不存在的資料行名稱。為避免這類錯誤,請確定 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
    

若要設定專案的部署屬性

  1. 按一下 [方案總管] 中的資料庫專案 RefactorNorthwind。

  2. 按一下 [專案] 功能表上的 [RefactorNorthwind 屬性]。

    專案屬性隨即出現。

  3. 按一下 [建置] 索引標籤。

  4. 按一下有標記 ... 的按鈕,即可顯示 [連接屬性] 對話方塊。

  5. 針對您要使用的資料庫設定其連接屬性,然後按一下 [確定]。

    即會以正確的連接字串填入 [目標連接] 方塊。

    警告:

    請用測試資料庫或開發資料庫測試此部署。請不要使用實際執行資料庫測試此部署。

  6. 在 [目標資料庫名稱] 方塊中,輸入目標資料庫的名稱。

    警告:

    根據預設,[目標資料庫名稱] 方塊中會填入資料庫專案的名稱。如果資料庫專案名稱不是目標資料庫名稱,您必須變更這個欄位。

  7. 勾選 [為存在目標資料庫,但不存在資料庫專案中的物件產生 DROP 陳述式] 核取方塊。舉例來說,當您要重新命名資料表時,這個核取方塊會很重要。產生的部署指令碼中將會包含舊名稱資料表的 DROP 陳述式及新名稱資料表的 CREATE TABLE 陳述式。您可以清除 [為存在目標資料庫,但不存在資料庫專案中的物件產生 DROP 陳述式] 核取方塊,以防止具有舊名稱的資料表遭到卸除。有好幾個方法可避免這種情況下可能造成的資料遺失,這個方法只是其中一種。如需詳細資訊,請參閱在重新命名作業期間保護資料

  8. 在 [檔案] 功能表上按一下 [全部儲存]。

  9. 按一下 [建置] 功能表上的 [建置方案],

    部署指令碼是根據您剛設定的專案屬性而建置。組建的狀態會出現在 [輸出] 視窗中,而且 [組建:1 成功或最新狀態] 應該會出現在最後一行中。

若要部署資料庫專案

  1. 在 [檔案] 功能表上,將游標指向 [開啟],然後按一下 [檔案]。

    [ 開啟檔案] 對話方塊隨即出現。

  2. 在 [檔案名稱] 方塊中,輸入下列位址,然後按一下 [開啟]。

    YourPath\RefactorNorthwind\Sql\RefactoringDeploy.YourServer.Northwind.sql

  3. 在部署指令碼中尋找下列幾行:

    DROP TABLE [dbo].[Orders]

    CREATE TABLE [dbo].[Orders]

    這幾行對應於您在前面逐步解說中所做的重構變更。這時您可以變更部署指令碼。例如,您可以刪除不想部署的 DROP 陳述式。如需詳細資訊,請參閱在重新命名作業期間保護資料。為方便本逐步解說使用,您可以保留原有的部署指令碼。

    警告:

    如果您變更部署指令碼,則必須從 T-SQL 編輯器執行指令碼,以手動方式部署。您不能使用部署命令來部署指令碼。

  4. 關閉部署指令碼。

  5. 在 [檢視] 功能表上按一下 [伺服器總管]。

    [伺服器總管] 視窗隨即出現,目標資料庫會顯示在 [資料連接] 底下。如果目標資料庫沒有出現,請開啟 [工具] 功能表,然後按一下 [連接至資料庫],加入目標資料庫的連接。

  6. 在 [伺服器總管] 中,依序展開目標資料庫、[資料表] 節點以及 Orders 資料表。

    ShippedDate 資料行會以舊有名稱出現。

  7. 按一下 [方案總管] 中的資料庫專案 RefactorNorthwind。

  8. 在 [建置] 功能表上按一下 [部署]。您也可以用滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [部署]。

    警告:

    請用測試資料庫或開發資料庫執行此部署。請不要使用實際執行資料庫執行此部署。

    即會使用此部署指令碼將資料庫專案部署到目標資料庫。部署的狀態會出現在 [輸出] 視窗中,而且 [部署成功] 應該會出現在最後一行。

  9. 在 [伺服器總管] 中,以滑鼠右鍵按一下 [資料表] 節點,然後按一下 [重新整理]。

    ShippedDate 資料行會以新名稱 ShippedDateAndTime 出現。

請參閱

概念

資料庫專案設定概觀

其他資源

重構資料庫

建置和部署資料庫結構描述