部署 CLR 資料庫物件

部署是指您用來散發即將在其他電腦上安裝和執行之已完成應用程式或模組的程序。 使用 Microsoft Visual Studio,您可以開發 Common Language Runtime (CLR) 資料庫物件,並將其部署至測試伺服器。 或者,Managed 資料庫物件也可以使用 Microsoft .NET Framework轉散發檔案編譯,而不是 Visual Studio。 編譯之後,即可使用 Visual Studio 或 Transact-SQL 語句,將包含 CLR 資料庫物件的元件部署到測試伺服器。 請注意,Visual Studio .NET 2003 無法用於 CLR 整合程式設計或部署。 SQL Server 包含預先安裝的 .NET Framework,且 Visual Studio .NET 2003 無法使用 .NET Framework 2.0 組件。

一旦 CLR 方法已經在測試伺服器上測試並驗證之後,您就可以使用部署指令碼,將它們散發至實際伺服器。 您可以手動產生部署腳本,或使用 SQL Server Management Studio (請參閱本主題稍後的程式) 。

CLR 整合功能預設會在 SQL Server 中關閉,而且必須啟用才能使用 CLR 元件。 如需詳細資訊,請參閱 Enabling CLR Integration

將組件部署至測試伺服器

您可以使用 Visual Studio 來開發 CLR 函數、程序、觸發程序、使用者定義型別 (UDT) 或使用者定義彙總 (UDA),然後將它們部署至測試伺服器。 您也可以使用 .NET Framework 轉散發檔案隨附的命令列編譯器 (例如 csc.exe 和 vbc.exe) 來編譯這些 Managed 資料庫物件。 不需要 Visual Studio 整合式開發環境,即可針對 SQL Server 開發 Managed 資料庫物件。

請確定已解決所有編譯器錯誤和警告。 然後,您可以使用 Visual Studio 或 Transact-SQL 語句,在SQL Server資料庫中註冊包含 CLR 常式的元件。

注意

必須在 SQL Server 實例上啟用 TCP/IP 網路通訊協定,才能使用 Microsoft Visual Studio 進行遠端開發、偵錯及開發。 如需在伺服器上啟用 TCP/IP 通訊協定的詳細資訊,請參閱設定用戶端通訊協定

使用 Visual Studio 來部署組件

  1. 從 [置] 功能表中選取 [建置專案名稱 > ]來建< 置專案。

  2. 解決所有建立錯誤和警告,然後再將組件部署至測試伺服器。

  3. 從 [建置] 功能表中選取 [部署]。 元件接著會在 visual Studio 中第一次建立SQL Server專案時所指定的SQL Server實例和資料庫中註冊。

使用 Transact-SQL 來部署組件

  1. 使用 .NET Framework 隨附的命令列編譯器來編譯來源檔案的組件。

  2. 針對 Microsoft Visual C# 原始程式檔:

  3. csc /target:library C:\helloworld.cs

  4. 針對 Microsoft Visual Basic 原始程式檔:

vbc /target:library C:\helloworld.vb

這些命令會啟動 Visual C# 或 Visual Basic 編譯器,並使用 /target 選項來指定要建立程式庫 DLL。

  1. 解決所有建立錯誤和警告,然後再將組件部署至測試伺服器。

  2. 在測試伺服器上開啟SQL Server Management Studio。 建立連接至適當測試資料庫 (例如 AdventureWorks) 的新查詢。

  3. 將下列 Transact-SQL 新增至查詢,在伺服器中建立元件。

CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;

  1. 程式、函數、匯總、使用者定義類型或觸發程式接著必須在 SQL Server 的實例中建立。 HelloWorld如果元件包含 類別中 Procedures 名為 HelloWorld 的方法,則可以將下列 Transact-SQL 新增至查詢,以在 SQL Server 中建立稱為 hello 的程式。

CREATE PROCEDURE hello

AS

EXTERNAL NAME HelloWorld.Procedures.HelloWorld

如需在 SQL Server 中建立不同類型的 Managed 資料庫物件的詳細資訊,請參閱CLR User-Defined函數CLR User-Defined匯總、CLRUser-Defined類型CLR 預存程式和 CLR觸發程式

將組件部署至實際伺服器

一旦 CLR 資料庫物件已經在測試伺服器上測試並驗證之後,您就可以將它們散發至實際伺服器。 如需偵錯 Managed 資料庫物件的詳細資訊,請參閱 偵錯 CLR 資料庫物件

Managed 資料庫物件的部署類似于一般資料庫物件 (資料表、Transact-SQL 常式等) 。 您可以使用部署指令碼,將包含 CLR 資料庫物件的組件部署至其他伺服器。 您可以使用 Management Studio 的「產生腳本」功能來建置部署腳本。 此外,您也可以手動建立部署指令碼,或先使用「產生指令碼」來建立部署指令碼,然後再手動進行更改。 建置部署腳本之後,就可以在其他實例上執行SQL Server,以部署受控資料庫物件。

使用產生指令碼來產生部署指令碼

  1. 開啟 Management Studio 並聯機到要部署的 Managed 元件或資料庫物件註冊所在的SQL Server實例。

  2. 物件總管中,展開< 伺服器名稱和 >資料庫樹狀結構。 以滑鼠右鍵按一下已註冊 Managed 資料庫物件的資料庫,選取 [ 工作],然後選取 [ 產生腳本]。 指令碼精靈隨即開啟。

  3. 從清單方塊中選取資料庫,然後按 [ 下一步]。

  4. 在 [ 選擇腳本選項 ] 窗格中,按 [ 下一步],或變更選項,然後按 [ 下一步]。

  5. 在 [ 選擇物件類型] 窗格中,選擇要部署的資料庫物件類型。 按一下 [下一步] 。

  6. 針對在 [選擇物件類型] 窗格中選取的每個物件類型,會顯示 [選擇 < 類型 >] 窗格。 在這個窗格中,您可以從該資料庫物件類型 (已在指定的資料庫中註冊) 的所有執行個體中選擇。 選取一或多個物件,然後按 [ 下一步]。

  7. 選取所有所需的資料庫物件類型時,會出現 [ 輸出選項 ] 窗格。 選取 [要檔案的腳本 ],然後指定腳本的檔案路徑。 選取 [下一步] 。 檢閱您的選取專案,然後按一下 [ 完成]。 此時,部署指令碼就會儲存至指定的檔案路徑。

部署後指令碼

您可以執行部署後指令碼。

若要加入部署後指令碼,請在您的 Visual Studio 專案目錄中加入稱為 postdeployscript.sql 的檔案。 例如,以滑鼠右鍵按一下方案總管中的專案,然後選取 [新增現有專案]。 將此檔案加入專案的根目錄中,而非加入 Test Scripts 資料夾中。

當您按一下 [部署] 時,Visual Studio 就會在專案部署完成之後執行此指令碼。

另請參閱

Common Language Runtime (CLR) 整合程式設計概念