逐步解說:建立和部署會參考其他資料庫的資料庫
在此逐步解說中,您將為參考另一個資料庫的資料庫建立「資料庫專案」(Database Project)。 專案參考的資料庫也是使用 Visual Studio Premium 管理,但會在不同的方案中。 此方法會模擬常見的案例,例如不同的開發人員管理不同的資料庫,或是開發人員無法部署本身為參考目標的資料庫。
這個逐步解說將說明下列工作:
如何建立資料庫專案。
如何參考另一個資料庫專案產生的 .dbschema 檔。
如何定義您參考之資料庫專案的變數及其值。
如何將資料庫專案部署到「隔離的開發環境」(Isolated Development Environment) 中。
必要條件
您必須已安裝 Visual Studio。 此外,您必須已完成逐步解說:建立及部署新版本控制的資料庫,並且已將產生的資料庫部署到隔離的開發環境。 若要將專案加入至版本控制,您必須已安裝版本控制軟體,例如 Visual Studio Team Foundation Server。
若要建立資料庫專案
在 [檔案] 功能表中,指向 [新增],然後按一下 [專案]。
[新增專案] 對話方塊隨即出現。
展開 [已安裝的範本] 底下的 [資料庫] 節點,然後按一下 [SQL Server]。
注意事項 如果您正在使用 Visual Studio Professional,請查看 [已安裝的範本],依序展開 [資料庫] 節點、[SQL Server] 節點,然後按一下 [進階]。
在範本清單中,按一下 [SQL Server 2008 資料庫專案]。
在 [名稱] 中輸入 OrdersDB。
選取 [為方案建立目錄] 核取方塊。
接受 [位置]、[方案名稱] 和 [加入至原始檔控制] 的預設值,然後按一下 [確定]。
注意事項 您可以在這個時候將您的方案加入到版本控制。 在此逐步解說的最後一個程序中,您會將此方案加入到版本控制。
新的資料庫專案 ProductsDB 會出現在 [方案總管] 中。
按一下 [檢視] 功能表上的 [資料庫結構描述檢視]。
[結構描述檢視] 隨即出現 (如果尚未出現)。
接著將資料表加入至資料庫專案。
若要將 OrderItems 資料表加入至資料庫專案
在 [結構描述檢視] 中,以滑鼠右鍵按一下 OrdersDB 專案,指向 [加入],然後按一下 [資料表]。
[加入新項目] 對話方塊隨即出現。
按一下 [範本] 中的 [資料表]。
注意事項 在 [分類] 清單中按一下 [資料表和檢視],可讓您更容易找到資料表的範本。
在 [名稱] 中,輸入 OrderItems 當做要提供給新資料表的名稱。
按一下 [加入],將此資料表加入至資料庫專案中。
[方案總管] 會顯示此資料表在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的資料表物件。 Transact-SQL 編輯器隨即出現,並且會顯示新資料表的定義。
在 Transact-SQL 編輯器中修改資料表定義,使其符合下列範例:
-- ============================================= -- Create OrderItems table -- ============================================= CREATE TABLE [dbo].[OrderItems] ( [POID] INT NOT NULL, [ItemID] INT NOT NULL, [ProductID] INT NOT NULL, [Quantity] INT NOT NULL, [Price] FLOAT NOT NULL, [Notes] NVARCHAR(75) NULL ) ON [PRIMARY]
按一下 [檔案] 功能表上的 [儲存 dbo.OrderItems.table.sql]。
在 [結構描述檢視] 中展開 [dbo.OrderItems] 節點。
展開 dbo.OrderItems 資料表中的 [資料行] 節點。
您在 Transact-SQL 編輯器中定義的資料行隨即出現。
接著將主索引鍵加入至 OrderItems 資料表。
若要將主索引鍵加入至 OrderItems 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [dbo.OrderItems],指向 [加入],然後按一下 [主索引鍵]。
[加入新項目] 對話方塊隨即出現。
在 [名稱] 中,輸入 PK_OrderItems 當做要提供給新主索引鍵的名稱。
按一下 [加入],加入主索引鍵。
[方案總管] 會顯示此主索引鍵在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的主索引鍵物件。 Transact-SQL 編輯器隨即出現,並且會顯示新索引鍵的定義。
注意事項 此主索引鍵的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "column_1" 資料行。
在 Transact-SQL 編輯器中修改主索引鍵定義,使其符合下列範例:
-- ============================================= -- Create PK_OrderItems primary key -- ============================================= ALTER TABLE [dbo].[OrderItems] ADD CONSTRAINT [PK_OrderItems] PRIMARY KEY CLUSTERED ([POID], [ItemID]) ON [PRIMARY]
按一下 [檔案] 功能表上的 [儲存 dbo.OrderItems.PK_OrderItems.pkey.sql]。
錯誤指示器會從圖示中消失,這表示此主索引鍵定義現在是有效的。
接著加入「跨資料庫參考」(Cross-Database Reference)。
若要加入參考另一個資料庫中資料表的檢視
在 [結構描述檢視] 中,以滑鼠右鍵按一下 [檢視表] 節點,指向 [加入],然後按一下 [檢視]。
在 [名稱] 中,輸入 ItemDetailsView 當做要提供給新檢視的名稱,然後按一下 [加入]。
[方案總管] 會顯示此檢視在資料庫專案中的新檔案。 [結構描述檢視] 會顯示新的檢視物件。 Transact-SQL 編輯器隨即出現,並且會顯示新檢視的定義。
注意事項 在 [結構描述檢視] 中,此檢視的圖示會有包含白色 "x" 的紅色圓形,代表預設的定義包含錯誤。 這是預期的行為,因為預設定義參考不存在的 "[sometableorview]" 資料表或檢視。
在 Transact-SQL 編輯器中修改資料表定義,使其符合下列範例:
-- ============================================= -- Create ItemDetailsView view -- ============================================= CREATE VIEW [dbo].[ItemDetailsView] AS SELECT O.[POID], O.[ItemID], P.[ProductName], P.[UnitPrice], O.[Quantity], O.[Price], O.[Notes] FROM [dbo].[OrderItems] AS O INNER JOIN [ProductsDB].[dbo].[Products] AS P ON P.[ProductID] = O.[ProductID]
按一下 [檔案] 功能表上的 [儲存 dbo.ItemDetailsView.view.sql]。
在 [檢視] 功能表上,按一下 [錯誤清單]。
[錯誤清單] 中會出現六項錯誤。 發生錯誤是因為 Visual Studio Premium 無法驗證部署資料庫專案時,參考的資料庫是否將存在目標伺服器上。 這種情況值得注意,因為您可以部署到不同的目標位置。 若要解決這些錯誤,接下來要定義跨資料庫參考。
若要定義跨資料庫參考
在 [方案總管] 中,展開 [OrderItems] 專案,然後按一下 [參考] 節點。
在 [專案] 功能表中按一下 [加入資料庫參考]。
注意事項 您也可以用滑鼠右鍵按一下 [參考] 節點,然後按一下 [加入資料庫參考]。
[加入資料庫參考] 對話方塊隨即出現。 由於方案僅包含一個資料庫專案,因此預設為指定 [資料庫專案結構描述 (.dbschema)]。
按一下 [瀏覽]。
[選取資料庫檔案] 對話方塊隨即出現。
指定您在必要逐步解說中建置專案時建立的 ProductsDB.dbschema 檔 (例如 My Documents\Visual Studio 2008\Projects\ProductsDB\ProductsDB\sql\ProductsDB.dbschema),然後按一下 [開啟]。
在 [資料庫參考變數] 中,選取 [定義資料庫變數] 核取方塊。 在 [名稱] 中輸入 ReferencedDBVar。 在 [值] 中輸入 ProductsDB。
注意事項 在此逐步解說中,可以假設您要參考的資料庫永遠與要加入參考的資料庫位於相同的伺服器上。 因此,您不必為伺服器名稱定義變數。
在 [正在更新結構描述物件和指令碼] 中,選取 [更新現有結構描述物件定義和指令碼以使用資料庫參考變數] 核取方塊,然後按一下 [確定]。
在 [預覽變更] 對話方塊中,按一下 [內部聯結] 顯示變更的詳細資料,然後按一下 [套用]。
檢視的定義會更新,以符合下列內容:
-- ============================================= -- Create ItemDetailsView view -- ============================================= CREATE VIEW [dbo].[ItemDetailsView] AS SELECT O.[POID], O.[ItemID], P.[ProductName], P.[UnitPrice], O.[Quantity], O.[Price], O.[Notes] FROM [dbo].[OrderItems] AS O INNER JOIN [$(ReferencedDBVar)].[dbo].[Products] AS P ON P.[ProductID] = O.[ProductID]
您指定的變數名稱會識別您要參考的資料表,且六項錯誤都已解決。 接著建置和部署資料庫專案
若要設定、建置和部署專案
在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。
按一下 [專案] 功能表上的 [OrdersDB 屬性]。
專案的屬性視窗隨即出現。
注意事項 您也可以用滑鼠右鍵按一下 [方案總管] 中的 [OrdersDB],然後按一下 [屬性]。
按一下 [部署] 索引標籤。
在 [部署動作] 中,按一下 [建立部署指令碼 (.sql) 並部署到資料庫]。
按一下 [編輯] 指定目標連接。
指定您要將 OrdersDB 資料庫部署到其中之資料庫伺服器的連接資訊。
重要事項 為了順利完成此逐步解說,您必須將資料庫部署到您在必要逐步解說中部署 ProductsDB 所在位置的同一部伺服器。 如果您要部署到不同的伺服器,則必須為其定義變數。
在 [選取或輸入資料庫名稱] 中,輸入 OrdersDB,然後按一下 [確定]。
[目標連接] 方塊包含連接字串,[目標資料庫名稱] 方塊則包含 OrdersDB。
接受其他選項的預設值,開啟 [檔案] 功能表,然後按一下 [儲存選取項目]。
您的專案部署設定將會儲存。
在 [建置] 功能表上,按一下 [建置方案]。
即會建置資料庫專案。 如果建置成功,狀態列中會出現 [建置成功],而且 [輸出] 視窗中會顯示建置結果。
在 [方案總管] 中,按一下 [OrdersDB] (專案而不是方案)。
在 [建置] 功能表上,指向 [部署 OrdersDB]。
即會使用您在組建組態中所指定的連接來部署資料庫專案。 「部署成功」訊息會出現在 [輸出] 視窗與狀態列中。
後續步驟
現在您通常會將資料庫專案放到版本控制下,以便與小組共用。