逐步解說:建立及部署新版本控制的資料庫
更新:2010 年 7 月
在此逐步解說中,您會建立一個簡單的資料庫,其中包含兩個資料表和一個預存程序。 這個程序要求您建立「資料庫專案」(Database Project)、建立該專案中的「資料庫物件」(Database Object),然後將您的變更建置及部署到資料庫伺服器。 建立資料庫專案之後,可以讓您的資料庫「結構描述」(Schema) 受版本控制之下 (其方式是將此資料庫專案受版本控制)。
本主題並非示範如何部署至實際執行或實際執行前置環境。 若要部署至這類環境,您通常會使用 VSDBCMD.EXE 公用程式,也可能會使用部署指令碼來手動部署。 如需詳細資訊,請參閱下列主題:
這個逐步解說的主要步驟如下:
建立資料庫專案。
建立資料庫資料表。
為這些資料表建立索引、索引鍵和條件約束。
建立兩個預存程序。
設定資料庫專案屬性。
建置資料庫專案。
部署資料庫專案。
讓資料庫專案受版本控制。
必要條件
若要執行此逐步解說,您必須以有權在執行 SQL Server 2008 的資料庫伺服器上建立資料庫的帳戶登入。
若要建立資料庫專案
在 [檔案] 功能表中,指向 [新增],然後按一下 [專案]。
[新增專案] 對話方塊隨即出現。
展開 [已安裝的範本] 底下的 [資料庫] 節點,然後按一下 [SQL Server]。
注意事項 如果您是使用 Visual Studio Professional,請改為依序展開 [已安裝的範本] 底下的 [資料庫] 節點和 [SQL Server] 節點,然後按一下 [進階]。
在範本清單中,按一下 [SQL Server 2008 資料庫專案]。
在 [名稱] 中輸入 OrdersDB。
選取 [為方案建立目錄] 核取方塊。
接受 [位置]、[方案名稱] 和 [加入至原始檔控制] 的預設值,然後按一下 [確定]。
注意事項 您可以在這個時候將您的方案加入到版本控制。 在此逐步解說的最後一個程序中,您會將此方案加入到版本控制。
新的資料庫專案 OrdersDB 會出現在 [方案總管] 中。
按一下 [檢視] 功能表上的 [資料庫結構描述檢視]。
[結構描述檢視] 隨即出現 (如果尚未出現)。
接著將結構描述加入至資料庫專案。
若要將 Sales 結構描述加入至資料庫專案
在 [結構描述檢視] 中,展開 [OrdersDB] 節點,然後按一下 [結構描述] 節點。
按一下 [專案] 功能表上的 [加入新項目]。
[加入新項目] 對話方塊隨即出現。
注意事項 您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [結構描述]。
按一下 [範本] 中的 [結構描述]。
注意事項 在 [分類] 清單中按一下 [資料表和檢視],可讓您更容易找到資料表的範本。
在 [名稱] 中,輸入 Sales 當做要提供給新結構描述的名稱。
按一下 [加入],將此結構描述加入至資料庫專案中。
[方案總管] 會顯示此結構描述在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的結構描述物件。 Transact-SQL 編輯器隨即出現,並顯示新結構描述的定義。
接下來,您要將資料表加入到資料庫專案中。
若要將 Customer 資料表加入至資料庫專案
在 [結構描述檢視] 中,展開 [Sales] 節點,以滑鼠右鍵按一下 [資料表] 節點,指向 [加入],然後按一下 [資料表]。
在 [名稱] 中,輸入 Customer 當做要提供給新資料表的名稱。
按一下 [加入],將此資料表加入至資料庫專案中。
[方案總管] 會顯示此資料表在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的資料表物件。 Transact-SQL 編輯器隨即出現,並顯示新資料表的定義。
在 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 );
按一下 [檔案] 功能表上的 [儲存 Sales.Customer.table.sql]。
在 [結構描述檢視] 中展開 [Sales.Customer] 節點。
在 Sales.Customer 資料表中,展開 [資料行] 節點。
您在 Transact-SQL 編輯器中定義的四個資料行隨即出現。
接下來,您要將主索引鍵加入 Customer 資料表。
若要將索引加入到 Customer 資料表中
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Customer],指向 [加入],然後按一下 [索引]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [索引]。
在 [名稱] 中,輸入 IX_CustomerCustomerName 當做要提供給新索引的名稱。
按一下 [加入],即可將此索引加入到 Categories 資料表中。
[方案總管] 會顯示此索引在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的索引物件。 Transact-SQL 編輯器隨即出現,並顯示新索引的定義。
注意事項 在 [結構描述檢視] 中,此索引的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 Transact-SQL 編輯器中修改索引定義,使其符合下列範例:
CREATE INDEX [IX_CustomerCustomerName] ON [Sales].[Customer] (CustomerName)
按一下 [檔案] 功能表上的 [儲存 Sales.Customer.IX_CustomerCustomerName.index.sql]。
錯誤指示器會從圖示中消失,這表示此索引定義現在是有效的。
接下來,您要將主索引鍵加入 Customer 資料表。
若要將主索引鍵加入 Customer 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Customer],指向 [加入],然後按一下 [主索引鍵]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [主索引鍵]。
在 [名稱] 中,輸入 PK_CustomerCustomerID 當做要提供給新主索引鍵的名稱。
按一下 [加入],將主索引鍵加入 Customer 資料表。
[方案總管] 會顯示此主索引鍵在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的主索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新索引鍵的定義。
注意事項 此主索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 Transact-SQL 編輯器中修改主索引鍵定義,使其符合下列範例:
ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [PK_CustomerCustomerID] PRIMARY KEY (CustomerID)
按一下 [檔案] 功能表上的 [儲存 Sales.Customer.PK_CustomerCustomerID.pkey.sql]。
錯誤指示器會從圖示中消失,這表示此主索引鍵定義現在是有效的。
接下來,您要加入 Orders 資料表。
若要加入 Orders 資料表
在 [結構描述檢視] 中,按一下 OrdersDB。
按一下 [專案] 功能表上的 [加入新項目]。
[加入新項目] 對話方塊隨即出現。
注意事項 您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [資料表]。
按一下 [範本] 中的 [資料表]。
在 [名稱] 中,輸入 Orders 當做要提供給新資料表的名稱。
按一下 [加入],將此資料表加入至資料庫專案中。
[方案總管] 會顯示此資料表在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的資料表物件。 Transact-SQL 編輯器隨即出現,並顯示新資料表的定義。
在 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 );
按一下 [檔案] 功能表上的 [儲存 Sales.Orders.table.sql]。
展開 [結構描述檢視] 中的 [Sales.Orders] 節點。
在 Sales.Orders 資料表中,展開 [資料行] 節點。
您在 Transact-SQL 編輯器中定義的資料行隨即出現。
接下來,您要將索引加入到 Products 資料表中。
若要將主索引鍵加入 Orders 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Orders],指向 [加入],然後按一下 [主索引鍵]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [主索引鍵]。
在 [名稱] 中,輸入 PK_OrdersOrderID 當做要提供給新主索引鍵的名稱。
按一下 [加入],將主索引鍵加入 Orders 資料表。
[方案總管] 會顯示新的主索引鍵在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的主索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新主索引鍵的定義。
注意事項 此主索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 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);
按一下 [檔案] 功能表上的 [儲存 Sales.Orders.PK_Orders_OrderID.pkey.sql]。
錯誤指示器會從圖示中消失,這表示此主索引鍵定義現在是有效的。
接下來,您要將外部索引鍵加入 Orders 資料表。
若要在 Orders 資料表和 Customer 資料表之間加入外部索引鍵
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [Sales.Orders],指向 [加入],然後按一下 [外部索引鍵]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [外部索引鍵]。
在 [名稱] 中,輸入 FK_OrdersCustomer 當做要提供給新外部索引鍵的名稱。
按一下 [加入],將外部索引鍵加入 Orders 資料表。
[方案總管] 會顯示新的外部索引鍵在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的外部索引鍵物件。 Transact-SQL 編輯器隨即出現,並顯示新外部索引鍵的定義。
注意事項 此外部索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 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;
按一下 [檔案] 功能表上的 [儲存 Sales.Orders.FK_OrdersCustomer.fkey.sql]。
錯誤指示器會從圖示中消失,這表示此外部索引鍵定義現在是有效的。
接下來,您要將檢查條件約束加入 Products 資料表。
若要將檢查條件約束加入 Orders 資料表
在 [結構描述檢視] 中,按一下 [Sales.Orders],指向 [加入],然後按一下 [檢查條件約束]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [檢查條件約束]。
在 [名稱] 中,輸入 CK_OrderStatus 當做要提供給新檢查條件約束的名稱。
按一下 [加入],將此條件約束加入 Products 資料表。
[方案總管] 會顯示此新條件約束在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的條件約束物件。 Transact-SQL 編輯器隨即出現,並顯示新條件約束的定義。
注意事項 此條件約束的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 Transact-SQL 編輯器中,修改條件約束定義,使其符合下列範例:
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [CK_OrderStatus] CHECK ([Status] IN ('O','X','F','B'))
按一下 [檔案] 功能表上的 [儲存 Sales.Orders.CK_OrderStatus.chkconst.sql]。
錯誤指示器會從圖示中消失,這表示此條件約束定義現在是有效的。
接下來,您要將兩個預存程序加入此專案中。
若要建立加入客戶的預存程序
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [結構描述] 底下的 [Sales],然後指向 [加入],再按一下 [預存程序]。
在 [名稱] 中,輸入 uspNewCustomer 當做要提供給新預存程序的名稱。
按一下 [加入],將此預存程序加入至資料庫專案中。
[方案總管] 會顯示新的預存程序在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的預存程序物件。 Transact-SQL 編輯器隨即出現,並顯示新預存程序的定義。
在 Transact-SQL 編輯器中,修改預存程序定義,使其符合下列範例:
CREATE PROCEDURE [Sales].[uspNewCustomer] @CustomerName NVARCHAR (40) AS BEGIN INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName); SELECT SCOPE_IDENTITY() END
按一下 [檔案] 功能表上的 [儲存 Sales.uspNewCustomer.proc.sql]。
在 [結構描述檢視] 中,展開 [可程式性] 節點,然後展開 [預存程序] 節點。
您在 Transact-SQL 編輯器中所定義的程序隨即出現。
接下來,您要加入為客戶下訂單的第二個預存程序。
若要建立為客戶下訂單的預存程序
在 [結構描述檢視] 中,按一下 OrdersDB。
按一下 [專案] 功能表上的 [加入新項目]。
[加入新項目] 對話方塊隨即出現。
注意事項 您也可以用滑鼠右鍵按一下 [結構描述檢視] 中的 OrdersDB 專案,然後指向 [加入],再按一下 [預存程序]。
展開 [類別] 中的 [資料庫專案],然後按一下 [可程式性]。
按一下 [範本] 中的 [預存程序]。
在 [名稱] 中,輸入 uspPlaceNewOrder 當做要提供給新預存程序的名稱。
按一下 [加入],將此預存程序加入至資料庫專案中。
[方案總管] 會顯示新的預存程序在資料庫專案中的檔案。 [結構描述檢視] 會顯示新的預存程序物件。 Transact-SQL 編輯器隨即出現,並顯示新預存程序的定義。
在 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
按一下 [檔案] 功能表上的 [儲存 Sales.uspPlaceNewOrder.proc.sql]。
在 [結構描述檢視] 中,展開 [可程式性] 節點,然後展開 [預存程序] 節點。
您在 Transact-SQL 編輯器中所定義的程序隨即出現。
接下來,您要進行專案設定,然後才可以建置及部署專案。
若要設定部署專案的設定
在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。
按一下 [專案] 功能表上的 [OrdersDB 屬性]。
專案屬性視窗隨即出現。
注意事項 您也可以用滑鼠右鍵按一下 [方案總管] 中的 [OrdersDB],然後按一下 [屬性]。
按一下 [部署] 索引標籤。
在 [部署動作] 清單中,按一下 [建立部署指令碼 (.sql) 並部署到資料庫]。
按一下 [編輯] 指定目標連接。
指定您要將 OrdersDB 資料庫部署到其中之資料庫伺服器的連接資訊。
在 [選取或輸入資料庫名稱] 中,輸入 OrdersDB,然後按一下 [確定]。
即會將此連接字串填入 [目標連接] 中。 請注意,[目標資料庫名稱] 會設定為 OrdersDB。
接受其他選項的預設值。
在 [檔案] 功能表上,按一下 [儲存選取項目]。
即會儲存您的專案建置設定。
接下來,您要建置資料庫專案。
若要建置資料庫專案
在 [建置] 功能表上,按一下 [建置方案]。
即會建置資料庫專案。 如果成功的話,狀態列中會出現 [建置成功],而且 [輸出] 視窗中會顯示建置結果。
最後,您要部署資料庫專案。
若要將資料庫專案部署到資料庫伺服器
在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。
按一下 [建置] 功能表上的 [部署 OrdersDB]。
即會使用您在建置組態中所指定的連接來部署資料庫專案。 「部署成功」訊息會出現在 [輸出] 視窗與狀態列中。
若要將資料庫專案簽入版本控制
按一下 [方案總管] 中的 [OrdersDB] (方案)。
指向 [檔案] 功能表上的 [原始檔控制],然後按一下 [將方案加入至原始檔控制]。
這時您會與安裝的版本控制軟體互動。 本逐步解說提供將專案加入 Team Foundation Server 的步驟。 如果要使用不同的版本控制軟體,請以同等的步驟取代。 如果使用 Team Foundation Server,[連接到 Team Foundation Server] 對話方塊隨即出現。
在 [連接到 Team Foundation Server] 中,按一下伺服器,以找到要加入方案的 Team 專案。
注意事項 如果沒有可以加入資料庫專案的 Team 專案,請參閱計劃和追蹤專案。
在 [Team 專案] 中,按一下要加入資料庫專案的 Team 專案,然後按一下 [確定]。
[將方案 OrdersDB 加入至原始檔控制] 對話方塊隨即出現。
按一下 [確定] 接受預設值。
您的資料庫專案及其包含的檔案隨即加入版本控制。 一開始仍為簽出狀態。 您必須簽入專案和檔案,才能讓其他小組成員存取。
指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。
[暫止的變更] 視窗隨即出現。
在 [註解] 欄位中輸入 Initial database project creation。
在 [暫止的變更] 視窗中,按一下工具列上的 [簽入]。
簽入資料庫專案和它所包含的檔案時,[簽入進度] 對話方塊隨即出現。 [方案總管] 中的圖示會更新,表示檔案已簽入版本控制。
後續步驟
您可以使用其他逐步解說來了解如何使用已部署的現有資料庫。
請參閱
概念
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 7 月 |
已釐清逐步解說的目的,並且已加入涵蓋其他部署情節之主題的連結。 |
客戶回函。 |