逐步解說:建立和部署會使用 SQL CLR 物件的資料庫專案
若要建立和部署使用 SQL Server Common Language Runtime (SQL CLR) 組件的資料庫,您可以建立「資料庫專案」(Database Project) 及 SQL CLR 專案。 當您建置和部署資料庫專案時,同時間會自動部署專案參考的 SQL CLR 組件。
在這個逐步解說中,您將執行下列工作:
建立簡單的資料庫專案。
建立 SQL CLR 專案,並定義新的資料型別。
使用您在 SQL CLR 組件中定義的型別。
建置及部署資料庫專案。
必要條件
若要完成這個逐步解說,您必須安裝 Visual Studio 2010 Premium。您必須擁有 SQL Server 2005 或 SQL Server 2008 執行個體的存取權。 您必須已經從 CodePlex 網站安裝了 SQL Server 的程式碼範例。 您必須擁有權限才能將資料庫部署至您的資料庫伺服器。
建立資料庫專案
若要建立資料庫專案
在 [檔案] 功能表中,指向 [新增],然後按一下 [專案]。
[新增專案] 對話方塊隨即出現。
展開 [已安裝的範本] 底下的 [資料庫] 節點,然後按一下 [SQL Server] 節點。
注意事項
如果您是使用 Visual Studio 2010 Professional,也必須展開 [進階] 節點,然後按一下 [SQL Server]。
在範本清單中,按一下 [SQL Server 2008 資料庫專案]。
在 [名稱] 中,輸入 SQLClrDatabaseSandbox。
重要事項
不要變更 [位置] 和 [方案名稱] 中的預設值。
選取 [為方案建立目錄] 核取方塊 (若尚未選取)。
清除 [加入至原始檔控制] 核取方塊 (若尚未清除),然後按一下 [確定]。
空的資料庫專案會出現在 [方案總管] 中。
接下來,您要為 SQL CLR 組件建立專案。
建立 SQL CLR 專案
若要建立 SQL CLR 專案
指向 [檔案] 功能表上的 [加入],然後按一下 [專案]。
[新增專案] 對話方塊隨即出現。
展開 [專案類型] 中的 [資料庫] 節點,然後按一下 [SQL Server]。
在 [範本] 清單中,按一下 [Visual Basic SQL CLR 資料庫專案] 或 [Visual C# SQL CLR 資料庫專案]。
在 [名稱] 中,輸入 SupportingSQLClrObjects。
按一下 [確定] 以接受預設的位置,然後關閉對話方塊並建立專案。
空的資料庫專案會出現在 [方案總管] 中。
在 [加入資料庫參考] 對話方塊中,按一下 [取消]。
按一下 [取消] 即可啟用資料庫專案,以決定組件應部署在哪裡。
接下來,您要在 SQL CLR 組件中建立自訂的資料型別。
若要定義自訂的 SQL CLR 資料型別
在 [專案] 功能表上,按一下 [加入使用者定義型別]。
[加入新項目] 對話方塊隨即出現。
在 [名稱] 中,輸入 MyCustomType.cs。
程式碼編輯器隨即開啟,並顯示 MyCustomType.cs 的內容。
注意事項
此時,您應該修改預設的使用者定義型別,以提供符合您需求的程式碼實作。 在這個逐步解說中,您將接受預設的程式碼實作: 如需如何定義自訂型別及其他 SQL CLR 物件的詳細資訊,請參閱 Microsoft 網站上的本主題:使用 SQL Server 2005 中的 CLR 整合 (英文)。
在 [檔案] 功能表上,按一下 [儲存 MyCustomType.cs]。
若要設定及建置 SQL CLR 組件
按一下 [建置] 功能表上的 [組態管理員]。
[組態管理員] 對話方塊隨即出現。
在 [專案內容] 中,清除 SupportingSQLClrObjects 組件之資料列中的 [部署] 核取方塊。
清除這個核取方塊,您就可以避免在部署方案時部署組件。 因為組件會和資料庫專案一起部署,所以不要讓組件被部署兩次。
按一下 [關閉]。
在 [方案總管] 中,以滑鼠右鍵按一下 SupportingSQLClrObjects 專案,然後按一下 [建置]。
組件隨即建置而不會發生任何錯誤。
接著,參考新的組件並使用您在該組件中定義的型別。
使用 SQL CLR 組件中定義的型別
若要使用您在 SQCLR 組件中所定義的型別,您必須從資料庫專案新增參考至該組件。 然後在資料庫專案中定義資料型別,您就可以在物件定義中使用新的資料型別。
若要加入 SQL CLR 組件的參考
在 [方案總管] 中展開 SQLClrDatabaseSandbox 專案,以滑鼠右鍵按一下 [參考] 節點,然後按一下 [加入參考]。
注意事項
您也可以在 [方案總管] 中按一下 SQLClrDatabaseSandbox 專案,開啟 [專案] 功能表,然後按一下 [加入參考]。
[加入參考] 對話方塊隨即開啟。
在 [專案] 索引標籤上,確認 SupportingSQLClrObjects 專案已反白顯示,然後按一下 [確定]。
SQL CLR 專案的參考隨即加入至您的資料庫專案。
展開 [方案總管] 中的 [References] 節點,然後按一下 [SupportingSQLClrObjects] 節點,然後按 F4。
顯示參考的屬性。
確認 [複製到本機] 設定為 [True],且 [使用權限等級] 設定為 [安全]。
在 [組件名稱] 屬性中,以 SupportingSQLClrObjects 來取代 SqlClassLibrary。
在 [擁有者] 屬性中輸入 dbo。
您可以指定另一個擁有者。
在 [檔案] 功能表上按一下 [全部儲存]。
您所指定的屬性會控制當您在建置專案時所建立的 CREATE ASSEMBLY 陳述式。
接著,您定義的資料型別要使用 SQL CLR 專案所產生的組件。
若要定義新的資料型別
在 [檢視] 功能表上,按一下 [錯誤清單] 和 [資料庫結構描述檢視]。
依序展開 [SQLClrDatabaseSandbox] 節點、[結構描述] 節點、[dbo] 節點和 [可程式性] 節點。
以滑鼠右鍵按一下 [型別] 節點,指向 [加入],然後按一下 [使用者定義型別 CLR]。
[加入新項目] 對話方塊隨即出現。
確認 [範本] 中的 [使用者定義型別 (CLR)] 已反白顯示。
在 [名稱] 中,輸入 MyCustomType,然後按一下 [新增]。
會顯示 Transact-SQL 編輯器,並顯示型別的定義。 在 [錯誤清單] 視窗中,會顯示下列錯誤:
SR0029 : Microsoft.Validation : User Defined Type: [dbo].[MyCustomType] has an unresolved reference to Assembly [assembly_name]
在 Transact-SQL 編輯器中,將程式碼更新為符合下列各行程式碼:
CREATE TYPE [dbo].[MyCustomType] EXTERNAL NAME [SupportingSQLClrObjects].[MyCustomType]
在 [檔案] 功能表上,按一下 [儲存 MyCustomType.udtclr.sql]。
在 [錯誤清單] 視窗中不會顯示錯誤,因為您已更新型別定義參考有效的組件及類別。
接著,您要定義一個簡單的資料表,該資料表會使用新的資料型別。
若要在資料表定義中使用新的資料型別
在 [結構描述檢視] 中,開啟 [結構描述] 節點,並開啟 [dbo] 節點。
以滑鼠右鍵按一下 [資料表] 節點,指向 [加入],然後按一下 [資料表]。
[加入新項目] 對話方塊隨即出現。
確認 [範本] 中的 [資料表] 已反白顯示。
在 [名稱] 中,輸入 SimpleTable,然後按一下 [新增]。
隨即顯示 Transact-SQL 編輯器,並顯示資料表的定義。
在 Transact-SQL 編輯器中,將程式碼更新為符合下列各行程式碼:
CREATE TABLE [dbo].[SimpleTable] ( column_1 int NOT NULL, column_2 [dbo].[MyCustomType] NULL )
按一下 [檔案] 功能表上的 [儲存 dbo.SimpleTable.table.sql]。
接著,設定資料庫專案並部署至「隔離的開發環境」(Isolated Development Environment)。
建置及部署資料庫專案
若要進行建置設定
按一下 [方案總管] 中的 [SQLClrDatabaseSandbox]。
按一下 [專案] 功能表上的 [SQLClrDatabaseSandbox 屬性]。
按一下 [建置] 索引標籤,並檢閱預設設定。
在這個逐步解說中,您可以使用預設的設定。
接著,進行部署設定。
若要進行部署設定
按一下 [部署] 索引標籤。
在 [部署動作] 清單中,按一下 [建立部署指令碼 (.sql) 並部署到資料庫]。
按一下 [為下列項目設定部署設定] 清單中的 [我的隔離開發環境]。
透過指定這個設定,就可以設定只會影響隔離的開發環境的值。 您將不會變更資料庫專案的設定。
接受 [部署指令碼名稱] 中的預設值。
按一下 [目標資料庫設定] 中的 [編輯],以指定目標連接。
在 [連接屬性] 對話方塊中,指定要在其中部署資料庫專案的伺服器和連接,然後按一下 [確定]。
接受 [目標資料庫名稱] 中的預設值。
在 [部署組態檔] 清單中,按一下 [Properties\Database.deploymentconfig]。
根據預設,您的隔離開發環境和詳細的部署設定沒有關聯。 當您指定這個檔案時,您會使用與資料庫專案相關聯的部署設定。 您也可以為隔離開發環境建立個別的組態檔並修改設定。
在 [SQL 命令變數檔] 清單中,按一下 [Properties\Database.sqlcmdvars]。
在 [檔案] 功能表上按一下 [全部儲存]。
接下來,您要建置資料庫專案。
若要建置及部署資料庫專案
在 [建置] 功能表上,按一下 [建置方案]。
資料庫專案和 SQL CLR 組件專案隨即建置成功。
在 [建置] 功能表上,按一下 [部署方案]。
資料庫專案和 SQL CLR 組件隨即部署至您在部署設定中所指定的目標伺服器和資料庫。 在 [輸出] 視窗中,會顯示下列訊息:
========== 部署: 1 成功、0 失敗、1 略過 ==========。
已成功部署了資料庫專案。 當您部署資料庫專案時,也會部署 SQL CLR 組件。 SQL CLR 組件不需要分開來部署,所以當您部署方案時會略過它。
將專案提供給小組使用 (選擇性)
若要將專案加入至版本控制
在 [方案總管] 中,按一下 [SQLClrDatabaseSandbox] 節點。
指向 [檔案] 功能表上的 [原始檔控制],然後按一下 [將方案加入至原始檔控制]。
這時您會與安裝的版本控制軟體互動。 本逐步解說提供將專案加入 Visual Studio Team Foundation Server 的步驟。 如果要使用不同的版本控制軟體,請以同等的步驟取代。 如果使用 Team Foundation Server,[連接到 Team Foundation Server] 對話方塊隨即出現。
在 [連接到 Team Foundation Server] 中按一下伺服器,此伺服器裝載要在其中加入方案的 Team 專案。
注意事項
如果沒有可以加入資料庫專案的 Team 專案,請參閱計劃和追蹤專案。
在 [Team 專案] 中,按一下要加入資料庫專案的 Team 專案,然後按一下 [確定]。
[將方案 SQLClrDatabaseSandbox 加入至原始檔控制] 對話方塊隨即出現。
按一下 [確定] 接受預設值。
您的資料庫專案及其包含的檔案隨即加入版本控制。 一開始仍為簽出狀態。 您必須簽入專案和檔案,才能讓其他小組成員存取。
指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。
[暫止的變更] 視窗隨即出現。
在 [註解] 欄位中輸入 Initial database project creation。
在 [暫止的變更] 視窗中,按一下工具列上的 [簽入]。
簽入資料庫專案和它所包含的檔案時,[簽入進度] 對話方塊隨即出現。 [方案總管] 中的圖示會變更,表示檔案已簽入版本控制。
後續步驟
接著您可能會建立「資料庫單元測試」(Database Unit Test) 和「資料產生計劃」(Data Generation Plan) 以測試組件。 如需詳細資訊,請參閱設定資料庫專案並執行測試部署。