Share via


部署 CLR 資料庫物件

部署是指您用來散發即將在其他電腦上安裝和執行之已完成應用程式或模組的程序。您可以使用 Microsoft Visual Studio 來開發 Common Language Runtime (CLR) 資料庫物件並將它們部署至測試伺服器。或者,您也可以使用 Microsoft .NET Framework 轉散發檔案 (而非 Visual Studio) 來編譯 Managed 資料庫物件。一旦編譯完成之後,您就可以使用 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 來產生部署指令碼 (請參閱本主題後面的程序)。

在 SQL Server 中,CLR 整合功能預設是關閉的,而且您必須啟用此功能才能使用 CLR 組件。如需詳細資訊,請參閱<啟用 CLR 整合>。

[!附註]

從 SQL Server 2005 開始,在相容性層級為 "80" 的 SQL Server 資料庫上,您無法建立 Managed 使用者定義型別、預存程序、函數、彙總或觸發程序。若要運用 SQL Server 的這些 CLR 整合功能,您必須使用 sp_dbcmptlevel (Transact-SQL) 預存程序,將資料庫相容性層級設定為 "90"。

將組件部署至測試伺服器

您可以使用 Visual Studio 來開發 CLR 函數、程序、觸發程序、使用者定義型別 (UDT) 或使用者定義彙總 (UDA),然後將它們部署至測試伺服器。您也可以使用 .NET Framework 轉散發檔案隨附的命令列編譯器 (例如 csc.exe 和 vbc.exe) 來編譯這些 Managed 資料庫物件。Visual Studio Integrated Development Environment 並非開發 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 使用者定義函數>、<CLR 使用者定義彙總>、<CLR 使用者定義型別>、<CLR 預存程序>和<CLR 觸發程序>。

將組件部署至實際伺服器

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

Managed 資料庫物件的部署作業與一般資料庫物件 (資料表、Transact-SQL 常式等項目) 的部署作業很相似。您可以使用部署指令碼,將包含 CLR 資料庫物件的組件部署至其他伺服器。您可以使用 Management Studio 的「產生指令碼」功能來建立部署指令碼。此外,您也可以手動建立部署指令碼,或先使用「產生指令碼」來建立部署指令碼,然後再手動進行更改。一旦部署指令碼已經建立完成之後,您就可以在其他 SQL Server 執行個體上執行此指令碼,以便部署 Managed 資料庫物件。

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

  1. 開啟 Management Studio 並連接至已註冊要部署之 Managed 組件或資料庫物件的 SQL Server 執行個體。

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

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

  4. [選擇指令碼選項] 窗格中,按 [下一步],或是變更選項,然後按 [下一步]

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

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

  7. 當您已經選取所有所需的資料庫物件類型時,就會顯示 [輸出選項] 窗格。選取 [編寫指令碼至檔案] 並指定指令碼的檔案路徑。選取 [下一步]。檢閱您的選取項目,然後按一下 [完成]。此時,部署指令碼就會儲存至指定的檔案路徑。

部署後指令碼

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

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

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