演練:創建和部署使用 SQL CLR 對象的數據庫項目

若要創建和部署使用 SQL Server 公共語言運行時 (SQL CLR) 程序集的數據庫,需要首先創建一個數據庫項目和一個 SQL CLR 項目。 生成和部署數據庫項目時,將同時自動部署該項目所引用的 SQL CLR 程序集。

在本演練中,您將執行以下任務:

  • 創建簡單的數據庫項目

  • 創建 SQL CLR 項目並定義新的數據類型

  • 使用在 SQL CLR 程序集中定義的類型

  • 生成和部署數據庫項目

    系統必備

    若要完成此演練,您必須安裝了 Visual Studio 2010 高級專業版。您必須具有對 SQL Server 2005 或 SQL Server 2008 的實例的訪問權限。 必須已從CodePlex Web site(CodePlex 網站)安裝 SQL Server 的代碼示例。 必須擁有將數據庫部署到數據庫服務器的權限。

    創建一個數據庫項目

    創建數據庫項目

    1. “文件”菜單上指向“新建”,再單擊“項目”

      將顯示"新建項目"對話框。

    2. “已安裝的模板”下,展開“數據庫”節點,然後單擊“SQL Server”節點。

      注意注意

      如果使用的是 Visual Studio 2010 專業版,則還必須先展開“高級”節點,然後單擊“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 網站上的以下主題:Using CLR Integration in SQL Server 2005(在 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. “解決方案資源管理器”中,展開“引用”節點,單擊 SupportingSQLClrObjects 節點,然後按 F4。

      將顯示該引用的屬性。

    4. 確認“複製本地”設置爲“True”,並且“權限級別”設置爲“安全”

    5. “程序集名稱”屬性中,將 SqlClassLibrary 替換爲 SupportingSQLClrObjects

    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”

      接下來,將配置數據庫項目,然後將其部署到獨立開發環境中。

    生成和部署數據庫項目

    配置生成設置

    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”中,單擊承載要向其添加解決方案的團隊項目的服務器。

      注意注意

      如果沒有可將數據庫項目添加到的團隊項目,請參見計劃和跟蹤項目

    4. “團隊項目”中單擊要將數據庫項目添加到其中的團隊項目,再單擊“確定”

      將顯示“向源代碼管理中添加解決方案 SQLClrDatabaseSandbox”對話框。

    5. 單擊“確定”接受默認值。

      您的數據庫項目及其包含的文件將置於版本控制之下。 最初,它們仍處於簽出狀態。 只有在您將它們簽入後其他團隊成員才能訪問它們。

    6. “視圖”菜單上,指向“其他窗口”,然後單擊“掛起的更改”

      將出現“掛起的更改”窗口。

    7. 在“註釋”字段中鍵入“初始數據庫項目創建”。

    8. “掛起的更改”窗口中,單擊工具欄上的“簽入”

      在簽入數據庫項目及其包含的文件的過程中,將顯示“簽入進度”對話框。 “解決方案資源管理器”中,圖標將會更改,以表明文件已簽入到版本控制中。


      原文來自:http://msdn.microsoft.com/zh-cn/dd193408.aspx

發佈了40 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章