共用方式為


逐步解說:建立及部署新版本控制的資料庫

更新:2010 年 7 月

在此逐步解說中,您會建立一個簡單的資料庫,其中包含兩個資料表和一個預存程序。 這個程序要求您建立「資料庫專案」(Database Project)、建立該專案中的「資料庫物件」(Database Object),然後將您的變更建置及部署到資料庫伺服器。 建立資料庫專案之後,可以讓您的資料庫「結構描述」(Schema) 受版本控制之下 (其方式是將此資料庫專案受版本控制)。

本主題並非示範如何部署至實際執行或實際執行前置環境。 若要部署至這類環境,您通常會使用 VSDBCMD.EXE 公用程式,也可能會使用部署指令碼來手動部署。 如需詳細資訊,請參閱下列主題:

這個逐步解說的主要步驟如下:

  • 建立資料庫專案。

  • 建立資料庫資料表。

  • 為這些資料表建立索引、索引鍵和條件約束。

  • 建立兩個預存程序。

  • 設定資料庫專案屬性。

  • 建置資料庫專案。

  • 部署資料庫專案。

  • 讓資料庫專案受版本控制。

必要條件

若要執行此逐步解說,您必須以有權在執行 SQL Server 2008 的資料庫伺服器上建立資料庫的帳戶登入。

若要建立資料庫專案

  1. 在 [檔案] 功能表中,指向 [新增],然後按一下 [專案]。

    [新增專案] 對話方塊隨即出現。

  2. 展開 [已安裝的範本] 底下的 [資料庫] 節點,然後按一下 [SQL Server]。

    注意事項注意事項

    如果您是使用 Visual Studio Professional,請改為依序展開 [已安裝的範本] 底下的 [資料庫] 節點和 [SQL Server] 節點,然後按一下 [進階]。

  3. 在範本清單中,按一下 [SQL Server 2008 資料庫專案]。

  4. 在 [名稱] 中輸入 OrdersDB。

  5. 選取 [為方案建立目錄] 核取方塊。

  6. 接受 [位置]、[方案名稱] 和 [加入至原始檔控制] 的預設值,然後按一下 [確定]。

    注意事項注意事項

    您可以在這個時候將您的方案加入到版本控制。 在此逐步解說的最後一個程序中,您會將此方案加入到版本控制。

    新的資料庫專案 OrdersDB 會出現在 [方案總管] 中。

  7. 按一下 [檢視] 功能表上的 [資料庫結構描述檢視]。

    [結構描述檢視] 隨即出現 (如果尚未出現)。

    接著將結構描述加入至資料庫專案。

若要將 Sales 結構描述加入至資料庫專案

  1. 在 [結構描述檢視] 中,展開 [OrdersDB] 節點,然後按一下 [結構描述] 節點。

  2. 按一下 [專案] 功能表上的 [加入新項目]。

    [加入新項目] 對話方塊隨即出現。

    注意事項注意事項

    您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [結構描述]。

  3. 按一下 [範本] 中的 [結構描述]。

    注意事項注意事項

    在 [分類] 清單中按一下 [資料表和檢視],可讓您更容易找到資料表的範本。

  4. 在 [名稱] 中,輸入 Sales 當做要提供給新結構描述的名稱。

  5. 按一下 [加入],將此結構描述加入至資料庫專案中。

    [方案總管] 會顯示此結構描述在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的結構描述物件。 Transact-SQL 編輯器隨即出現,並顯示新結構描述的定義。

    接下來,您要將資料表加入到資料庫專案中。

若要將 Customer 資料表加入至資料庫專案

  1. 在 [結構描述檢視] 中,展開 [Sales] 節點,以滑鼠右鍵按一下 [資料表] 節點,指向 [加入],然後按一下 [資料表]。

  2. 在 [名稱] 中,輸入 Customer 當做要提供給新資料表的名稱。

  3. 按一下 [加入],將此資料表加入至資料庫專案中。

    [方案總管] 會顯示此資料表在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的資料表物件。 Transact-SQL 編輯器隨即出現,並顯示新資料表的定義。

  4. 在 Transact-SQL 編輯器中修改資料表定義,使其符合下列範例:

    CREATE TABLE [Sales].[Customer] (
        [CustomerID] INT IDENTITY (1, 1) NOT NULL,
        [CustomerName] NVARCHAR (40) NOT NULL,
        [YTDOrders] INT NOT NULL,
        [YTDSales] INT NOT NULL
    );
    
  5. 按一下 [檔案] 功能表上的 [儲存 Sales.Customer.table.sql]。

  6. 在 [結構描述檢視] 中展開 [Sales.Customer] 節點。

  7. 在 Sales.Customer 資料表中,展開 [資料行] 節點。

    您在 Transact-SQL 編輯器中定義的四個資料行隨即出現。

    接下來,您要將主索引鍵加入 Customer 資料表。

若要將索引加入到 Customer 資料表中

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Customer],指向 [加入],然後按一下 [索引]。

    [加入新項目] 對話方塊隨即出現。

  2. 按一下 [範本] 中的 [索引]。

  3. 在 [名稱] 中,輸入 IX_CustomerCustomerName 當做要提供給新索引的名稱。

  4. 按一下 [加入],即可將此索引加入到 Categories 資料表中。

    [方案總管] 會顯示此索引在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的索引物件。 Transact-SQL 編輯器隨即出現,並顯示新索引的定義。

    注意事項注意事項

    在 [結構描述檢視] 中,此索引的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。

  5. 在 Transact-SQL 編輯器中修改索引定義,使其符合下列範例:

    CREATE INDEX [IX_CustomerCustomerName]
        ON [Sales].[Customer]
    (CustomerName)
    
  6. 按一下 [檔案] 功能表上的 [儲存 Sales.Customer.IX_CustomerCustomerName.index.sql]。

    錯誤指示器會從圖示中消失,這表示此索引定義現在是有效的。

    接下來,您要將主索引鍵加入 Customer 資料表。

若要將主索引鍵加入 Customer 資料表

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Customer],指向 [加入],然後按一下 [主索引鍵]。

    [加入新項目] 對話方塊隨即出現。

  2. 按一下 [範本] 中的 [主索引鍵]。

  3. 在 [名稱] 中,輸入 PK_CustomerCustomerID 當做要提供給新主索引鍵的名稱。

  4. 按一下 [加入],將主索引鍵加入 Customer 資料表。

    [方案總管] 會顯示此主索引鍵在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的主索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新索引鍵的定義。

    注意事項注意事項

    此主索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。

  5. 在 Transact-SQL 編輯器中修改主索引鍵定義,使其符合下列範例:

    ALTER TABLE [Sales].[Customer]
    ADD CONSTRAINT [PK_CustomerCustomerID]
    PRIMARY KEY (CustomerID)
    
  6. 按一下 [檔案] 功能表上的 [儲存 Sales.Customer.PK_CustomerCustomerID.pkey.sql]。

    錯誤指示器會從圖示中消失,這表示此主索引鍵定義現在是有效的。

    接下來,您要加入 Orders 資料表。

若要加入 Orders 資料表

  1. 在 [結構描述檢視] 中,按一下 OrdersDB。

  2. 按一下 [專案] 功能表上的 [加入新項目]。

    [加入新項目] 對話方塊隨即出現。

    注意事項注意事項

    您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [資料表]。

  3. 按一下 [範本] 中的 [資料表]。

  4. 在 [名稱] 中,輸入 Orders 當做要提供給新資料表的名稱。

  5. 按一下 [加入],將此資料表加入至資料庫專案中。

    [方案總管] 會顯示此資料表在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的資料表物件。 Transact-SQL 編輯器隨即出現,並顯示新資料表的定義。

  6. 在 Transact-SQL 編輯器中修改資料表定義,使其符合下列範例:

    CREATE TABLE [Sales].[Orders] (
        [CustomerID] INT NOT NULL,
        [OrderID] INT IDENTITY (1, 1) NOT NULL,
        [OrderDate] DATETIME NOT NULL,
        [FilledDate] DATETIME NULL,
        [Status] CHAR (1) NOT NULL,
        [Amount] INT NOT NULL
    );
    
  7. 按一下 [檔案] 功能表上的 [儲存 Sales.Orders.table.sql]。

  8. 展開 [結構描述檢視] 中的 [Sales.Orders] 節點。

  9. 在 Sales.Orders 資料表中,展開 [資料行] 節點。

    您在 Transact-SQL 編輯器中定義的資料行隨即出現。

    接下來,您要將索引加入到 Products 資料表中。

若要將主索引鍵加入 Orders 資料表

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Orders],指向 [加入],然後按一下 [主索引鍵]。

    [加入新項目] 對話方塊隨即出現。

  2. 按一下 [範本] 中的 [主索引鍵]。

  3. 在 [名稱] 中,輸入 PK_OrdersOrderID 當做要提供給新主索引鍵的名稱。

  4. 按一下 [加入],將主索引鍵加入 Orders 資料表。

    [方案總管] 會顯示新的主索引鍵在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的主索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新主索引鍵的定義。

    注意事項注意事項

    此主索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。

  5. 在 Transact-SQL 編輯器中修改主索引鍵定義,使其符合下列範例:

    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
    
  6. 按一下 [檔案] 功能表上的 [儲存 Sales.Orders.PK_Orders_OrderID.pkey.sql]。

    錯誤指示器會從圖示中消失,這表示此主索引鍵定義現在是有效的。

    接下來,您要將外部索引鍵加入 Orders 資料表。

若要在 Orders 資料表和 Customer 資料表之間加入外部索引鍵

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Orders],指向 [加入],然後按一下 [外部索引鍵]。

    [加入新項目] 對話方塊隨即出現。

  2. 按一下 [範本] 中的 [外部索引鍵]。

  3. 在 [名稱] 中,輸入 FK_OrdersCustomer 當做要提供給新外部索引鍵的名稱。

  4. 按一下 [加入],將外部索引鍵加入 Orders 資料表。

    [方案總管] 會顯示新的外部索引鍵在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的外部索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新外部索引鍵的定義。

    注意事項注意事項

    此外部索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。

  5. 在 Transact-SQL 編輯器中,修改外部索引鍵定義,使其符合下列範例:

    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [FK_Orders_Customer_CustID] 
        FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) 
        ON DELETE NO ACTION ON UPDATE NO ACTION;
    
  6. 按一下 [檔案] 功能表上的 [儲存 Sales.Orders.FK_OrdersCustomer.fkey.sql]。

    錯誤指示器會從圖示中消失,這表示此外部索引鍵定義現在是有效的。

    接下來,您要將檢查條件約束加入 Products 資料表。

若要將檢查條件約束加入 Orders 資料表

  1. 在 [結構描述檢視] 中,按一下 [Sales.Orders],指向 [加入],然後按一下 [檢查條件約束]。

    [加入新項目] 對話方塊隨即出現。

  2. 按一下 [範本] 中的 [檢查條件約束]。

  3. 在 [名稱] 中,輸入 CK_OrderStatus 當做要提供給新檢查條件約束的名稱。

  4. 按一下 [加入],將此條件約束加入 Products 資料表。

    [方案總管] 會顯示此新條件約束在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的條件約束物件。 Transact-SQL 編輯器隨即出現,並顯示新條件約束的定義。

    注意事項注意事項

    此條件約束的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。

  5. 在 Transact-SQL 編輯器中,修改條件約束定義,使其符合下列範例:

    ALTER TABLE [Sales].[Orders]
    ADD CONSTRAINT [CK_OrderStatus] 
    CHECK  ([Status] IN ('O','X','F','B'))
    
  6. 按一下 [檔案] 功能表上的 [儲存 Sales.Orders.CK_OrderStatus.chkconst.sql]。

    錯誤指示器會從圖示中消失,這表示此條件約束定義現在是有效的。

    接下來,您要將兩個預存程序加入此專案中。

若要建立加入客戶的預存程序

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 [結構描述] 底下的 [Sales],然後指向 [加入],再按一下 [預存程序]。

  2. 在 [名稱] 中,輸入 uspNewCustomer 當做要提供給新預存程序的名稱。

  3. 按一下 [加入],將此預存程序加入至資料庫專案中。

    [方案總管] 會顯示新的預存程序在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的預存程序物件。 Transact-SQL 編輯器隨即出現,並顯示新預存程序的定義。

  4. 在 Transact-SQL 編輯器中,修改預存程序定義,使其符合下列範例:

    CREATE PROCEDURE [Sales].[uspNewCustomer]
    @CustomerName NVARCHAR (40)
    AS
    BEGIN
    INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName);
    SELECT SCOPE_IDENTITY()
    END
    
  5. 按一下 [檔案] 功能表上的 [儲存 Sales.uspNewCustomer.proc.sql]。

  6. 在 [結構描述檢視] 中,展開 [可程式性] 節點,然後展開 [預存程序] 節點。

    您在 Transact-SQL 編輯器中所定義的程序隨即出現。

    接下來,您要加入為客戶下訂單的第二個預存程序。

若要建立為客戶下訂單的預存程序

  1. 在 [結構描述檢視] 中,按一下 OrdersDB。

  2. 按一下 [專案] 功能表上的 [加入新項目]。

    [加入新項目] 對話方塊隨即出現。

    注意事項注意事項

    您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [預存程序]。

  3. 展開 [類別] 中的 [資料庫專案],然後按一下 [可程式性]。

  4. 按一下 [範本] 中的 [預存程序]。

  5. 在 [名稱] 中,輸入 uspPlaceNewOrder 當做要提供給新預存程序的名稱。

  6. 按一下 [加入],將此預存程序加入至資料庫專案中。

    [方案總管] 會顯示新的預存程序在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的預存程序物件。 Transact-SQL 編輯器隨即出現,並顯示新預存程序的定義。

  7. 在 Transact-SQL 編輯器中,修改預存程序定義,使其符合下列範例:

    CREATE PROCEDURE [Sales].[uspPlaceNewOrder]
    @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O'
    AS
    BEGIN
    DECLARE @RC INT
    BEGIN TRANSACTION
    INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) 
         VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount)
    SELECT @RC = SCOPE_IDENTITY();
    UPDATE [Sales].[Customer]
       SET
       YTDOrders = YTDOrders + @Amount
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    RETURN @RC
    END
    
  8. 按一下 [檔案] 功能表上的 [儲存 Sales.uspPlaceNewOrder.proc.sql]。

  9. 在 [結構描述檢視] 中,展開 [可程式性] 節點,然後展開 [預存程序] 節點。

    您在 Transact-SQL 編輯器中所定義的程序隨即出現。

    接下來,您要進行專案設定,然後才可以建置及部署專案。

若要設定部署專案的設定

  1. 在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。

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

    專案屬性視窗隨即出現。

    注意事項注意事項

    您也可以用滑鼠右鍵按一下 [方案總管] 中的 [OrdersDB],然後按一下 [屬性]。

  3. 按一下 [部署] 索引標籤。

  4. 在 [部署動作] 清單中,按一下 [建立部署指令碼 (.sql) 並部署到資料庫]。

  5. 按一下 [編輯] 指定目標連接。

  6. 指定您要將 OrdersDB 資料庫部署到其中之資料庫伺服器的連接資訊。

  7. 在 [選取或輸入資料庫名稱] 中,輸入 OrdersDB,然後按一下 [確定]。

    即會將此連接字串填入 [目標連接] 中。 請注意,[目標資料庫名稱] 會設定為 OrdersDB。

  8. 接受其他選項的預設值。

  9. 在 [檔案] 功能表上,按一下 [儲存選取項目]。

    即會儲存您的專案建置設定。

    接下來,您要建置資料庫專案。

若要建置資料庫專案

  • 在 [建置] 功能表上,按一下 [建置方案]。

    即會建置資料庫專案。 如果成功的話,狀態列中會出現 [建置成功],而且 [輸出] 視窗中會顯示建置結果。

    最後,您要部署資料庫專案。

若要將資料庫專案部署到資料庫伺服器

  1. 在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。

  2. 按一下 [建置] 功能表上的 [部署 OrdersDB]。

    即會使用您在建置組態中所指定的連接來部署資料庫專案。 「部署成功」訊息會出現在 [輸出] 視窗與狀態列中。

若要將資料庫專案簽入版本控制

  1. 按一下 [方案總管] 中的 [OrdersDB] (方案)。

  2. 指向 [檔案] 功能表上的 [原始檔控制],然後按一下 [將方案加入至原始檔控制]。

    這時您會與安裝的版本控制軟體互動。 本逐步解說提供將專案加入 Team Foundation Server 的步驟。 如果要使用不同的版本控制軟體,請以同等的步驟取代。 如果使用 Team Foundation Server,[連接到 Team Foundation Server] 對話方塊隨即出現。

  3. 在 [連接到 Team Foundation Server] 中,按一下伺服器,以找到要加入方案的 Team 專案。

    注意事項注意事項

    如果沒有可以加入資料庫專案的 Team 專案,請參閱計劃和追蹤專案

  4. 在 [Team 專案] 中,按一下要加入資料庫專案的 Team 專案,然後按一下 [確定]。

    [將方案 OrdersDB 加入至原始檔控制] 對話方塊隨即出現。

  5. 按一下 [確定] 接受預設值。

    您的資料庫專案及其包含的檔案隨即加入版本控制。 一開始仍為簽出狀態。 您必須簽入專案和檔案,才能讓其他小組成員存取。

  6. 指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。

    [暫止的變更] 視窗隨即出現。

  7. 在 [註解] 欄位中輸入 Initial database project creation。

  8. 在 [暫止的變更] 視窗中,按一下工具列上的 [簽入]。

    簽入資料庫專案和它所包含的檔案時,[簽入進度] 對話方塊隨即出現。 [方案總管] 中的圖示會更新,表示檔案已簽入版本控制。

後續步驟

您可以使用其他逐步解說來了解如何使用已部署的現有資料庫。

請參閱

概念

設定資料庫專案並執行測試部署

撰寫和變更資料庫程式碼

建置和部署資料庫到開發用或實際執行環境

變更記錄

日期

記錄

原因

2010 年 7 月

已釐清逐步解說的目的,並且已加入涵蓋其他部署情節之主題的連結。

客戶回函。