共用方式為


逐步解說:建立和部署會使用 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 的程式碼範例。 您必須擁有權限才能將資料庫部署至您的資料庫伺服器。

建立資料庫專案

若要建立資料庫專案

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

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

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

    注意事項注意事項

    如果您是使用 Visual Studio 2010 Professional,也必須展開 [進階] 節點,然後按一下 [SQL Server]。

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

  4. 在 [名稱] 中,輸入 SQLClrDatabaseSandbox。

    重要事項重要事項

    不要變更 [位置] 和 [方案名稱] 中的預設值。

  5. 選取 [為方案建立目錄] 核取方塊 (若尚未選取)。

  6. 清除 [加入至原始檔控制] 核取方塊 (若尚未清除),然後按一下 [確定]。

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

    接下來,您要為 SQL CLR 組件建立專案。

建立 SQL CLR 專案

若要建立 SQL CLR 專案

  1. 指向 [檔案] 功能表上的 [加入],然後按一下 [專案]。

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

  2. 展開 [專案類型] 中的 [資料庫] 節點,然後按一下 [SQL Server]。

  3. 在 [範本] 清單中,按一下 [Visual Basic SQL CLR 資料庫專案] 或 [Visual C# SQL CLR 資料庫專案]。

  4. 在 [名稱] 中,輸入 SupportingSQLClrObjects。

  5. 按一下 [確定] 以接受預設的位置,然後關閉對話方塊並建立專案。

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

  6. 在 [加入資料庫參考] 對話方塊中,按一下 [取消]。

    按一下 [取消] 即可啟用資料庫專案,以決定組件應部署在哪裡。

    接下來,您要在 SQL CLR 組件中建立自訂的資料型別。

若要定義自訂的 SQL CLR 資料型別

  1. 在 [專案] 功能表上,按一下 [加入使用者定義型別]。

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

  2. 在 [名稱] 中,輸入 MyCustomType.cs。

    程式碼編輯器隨即開啟,並顯示 MyCustomType.cs 的內容。

    注意事項注意事項

    此時,您應該修改預設的使用者定義型別,以提供符合您需求的程式碼實作。 在這個逐步解說中,您將接受預設的程式碼實作: 如需如何定義自訂型別及其他 SQL CLR 物件的詳細資訊,請參閱 Microsoft 網站上的本主題:使用 SQL Server 2005 中的 CLR 整合 (英文)。

  3. 在 [檔案] 功能表上,按一下 [儲存 MyCustomType.cs]。

若要設定及建置 SQL CLR 組件

  1. 按一下 [建置] 功能表上的 [組態管理員]。

    [組態管理員] 對話方塊隨即出現。

  2. 在 [專案內容] 中,清除 SupportingSQLClrObjects 組件之資料列中的 [部署] 核取方塊。

    清除這個核取方塊,您就可以避免在部署方案時部署組件。 因為組件會和資料庫專案一起部署,所以不要讓組件被部署兩次。

  3. 按一下 [關閉]。

  4. 在 [方案總管] 中,以滑鼠右鍵按一下 SupportingSQLClrObjects 專案,然後按一下 [建置]。

    組件隨即建置而不會發生任何錯誤。

    接著,參考新的組件並使用您在該組件中定義的型別。

使用 SQL CLR 組件中定義的型別

若要使用您在 SQCLR 組件中所定義的型別,您必須從資料庫專案新增參考至該組件。 然後在資料庫專案中定義資料型別,您就可以在物件定義中使用新的資料型別。

若要加入 SQL CLR 組件的參考

  1. 在 [方案總管] 中展開 SQLClrDatabaseSandbox 專案,以滑鼠右鍵按一下 [參考] 節點,然後按一下 [加入參考]。

    注意事項注意事項

    您也可以在 [方案總管] 中按一下 SQLClrDatabaseSandbox 專案,開啟 [專案] 功能表,然後按一下 [加入參考]。

    [加入參考] 對話方塊隨即開啟。

  2. 在 [專案] 索引標籤上,確認 SupportingSQLClrObjects 專案已反白顯示,然後按一下 [確定]。

    SQL CLR 專案的參考隨即加入至您的資料庫專案。

  3. 展開 [方案總管] 中的 [References] 節點,然後按一下 [SupportingSQLClrObjects] 節點,然後按 F4。

    顯示參考的屬性。

  4. 確認 [複製到本機] 設定為 [True],且 [使用權限等級] 設定為 [安全]。

  5. 在 [組件名稱] 屬性中,以 SupportingSQLClrObjects 來取代 SqlClassLibrary。

  6. 在 [擁有者] 屬性中輸入 dbo。

    您可以指定另一個擁有者。

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

    您所指定的屬性會控制當您在建置專案時所建立的 CREATE ASSEMBLY 陳述式。

    接著,您定義的資料型別要使用 SQL CLR 專案所產生的組件。

若要定義新的資料型別

  1. 在 [檢視] 功能表上,按一下 [錯誤清單] 和 [資料庫結構描述檢視]。

  2. 依序展開 [SQLClrDatabaseSandbox] 節點、[結構描述] 節點、[dbo] 節點和 [可程式性] 節點。

  3. 以滑鼠右鍵按一下 [型別] 節點,指向 [加入],然後按一下 [使用者定義型別 CLR]。

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

  4. 確認 [範本] 中的 [使用者定義型別 (CLR)] 已反白顯示。

  5. 在 [名稱] 中,輸入 MyCustomType,然後按一下 [新增]。

    會顯示 Transact-SQL 編輯器,並顯示型別的定義。 在 [錯誤清單] 視窗中,會顯示下列錯誤:

SR0029 : Microsoft.Validation : User Defined Type: [dbo].[MyCustomType] has an unresolved reference to Assembly [assembly_name]
  1. 在 Transact-SQL 編輯器中,將程式碼更新為符合下列各行程式碼:

    CREATE TYPE [dbo].[MyCustomType]
    EXTERNAL NAME [SupportingSQLClrObjects].[MyCustomType]
    
  2. 在 [檔案] 功能表上,按一下 [儲存 MyCustomType.udtclr.sql]。

    在 [錯誤清單] 視窗中不會顯示錯誤,因為您已更新型別定義參考有效的組件及類別。

    接著,您要定義一個簡單的資料表,該資料表會使用新的資料型別。

若要在資料表定義中使用新的資料型別

  1. 在 [結構描述檢視] 中,開啟 [結構描述] 節點,並開啟 [dbo] 節點。

  2. 以滑鼠右鍵按一下 [資料表] 節點,指向 [加入],然後按一下 [資料表]。

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

  3. 確認 [範本] 中的 [資料表] 已反白顯示。

  4. 在 [名稱] 中,輸入 SimpleTable,然後按一下 [新增]。

    隨即顯示 Transact-SQL 編輯器,並顯示資料表的定義。

  5. 在 Transact-SQL 編輯器中,將程式碼更新為符合下列各行程式碼:

    CREATE TABLE [dbo].[SimpleTable]
    (
    column_1 int NOT NULL, 
    column_2 [dbo].[MyCustomType] NULL
    )
    
  6. 按一下 [檔案] 功能表上的 [儲存 dbo.SimpleTable.table.sql]。

    接著,設定資料庫專案並部署至「隔離的開發環境」(Isolated Development Environment)。

建置及部署資料庫專案

若要進行建置設定

  1. 按一下 [方案總管] 中的 [SQLClrDatabaseSandbox]。

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

  3. 按一下 [建置] 索引標籤,並檢閱預設設定。

    在這個逐步解說中,您可以使用預設的設定。

    接著,進行部署設定。

若要進行部署設定

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

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

  3. 按一下 [為下列項目設定部署設定] 清單中的 [我的隔離開發環境]。

    透過指定這個設定,就可以設定只會影響隔離的開發環境的值。 您將不會變更資料庫專案的設定。

  4. 接受 [部署指令碼名稱] 中的預設值。

  5. 按一下 [目標資料庫設定] 中的 [編輯],以指定目標連接。

  6. 在 [連接屬性] 對話方塊中,指定要在其中部署資料庫專案的伺服器和連接,然後按一下 [確定]。

  7. 接受 [目標資料庫名稱] 中的預設值。

  8. 在 [部署組態檔] 清單中,按一下 [Properties\Database.deploymentconfig]。

    根據預設,您的隔離開發環境和詳細的部署設定沒有關聯。 當您指定這個檔案時,您會使用與資料庫專案相關聯的部署設定。 您也可以為隔離開發環境建立個別的組態檔並修改設定。

  9. 在 [SQL 命令變數檔] 清單中,按一下 [Properties\Database.sqlcmdvars]。

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

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

若要建置及部署資料庫專案

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

    資料庫專案和 SQL CLR 組件專案隨即建置成功。

  2. 在 [建置] 功能表上,按一下 [部署方案]。

    資料庫專案和 SQL CLR 組件隨即部署至您在部署設定中所指定的目標伺服器和資料庫。 在 [輸出] 視窗中,會顯示下列訊息:

    ========== 部署: 1 成功、0 失敗、1 略過 ==========。

    已成功部署了資料庫專案。 當您部署資料庫專案時,也會部署 SQL CLR 組件。 SQL CLR 組件不需要分開來部署,所以當您部署方案時會略過它。

將專案提供給小組使用 (選擇性)

若要將專案加入至版本控制

  1. 在 [方案總管] 中,按一下 [SQLClrDatabaseSandbox] 節點。

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

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

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

    注意事項注意事項

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

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

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

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

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

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

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

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

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

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

後續步驟

接著您可能會建立「資料庫單元測試」(Database Unit Test) 和「資料產生計劃」(Data Generation Plan) 以測試組件。 如需詳細資訊,請參閱設定資料庫專案並執行測試部署

請參閱

概念

開始以小組開發資料庫

開始以小組開發參考其他資料庫的資料庫

開始以小組開發參考 SQLCLR 物件的資料庫

開始以小組開發參考共用伺服器物件的資料庫

Visual Studio 資料庫功能的必要權限