CLR 使用者定義類型

適用於:SQL Server

SQL Server可讓您針對在 .NET Framework common Language Runtime (CLR) 中建立的元件建立資料庫物件。 資料庫物件可充分運用 CLR 所提供的豐富程式設計模型,包括觸發程序、預存程序、函數、彙總函式和類型等。

注意

執行 CLR 程式碼的能力預設會在 SQL Server 中設定為 OFF。 您可以使用 sp_configure 系統預存程式來啟用 CLR。

從 SQL Server 2005 (9.x) 開始,您可以使用使用者定義的類型 (UDT) 來擴充伺服器的純量類型系統,以便在SQL Server資料庫中儲存 CLR 物件。 UDT 可以包含多個項目並可以具有行為,這使得它有別於由單一 SQL Server 系統資料型別組成的傳統別名資料型別。

因為系統將 UDT 當做一個整體來進行存取,所以它們使用的複雜資料類型可能會對效能產生負面影響。 通常使用傳統資料列及資料表可以對複雜資料進行最佳模型化。 SQL Server中的 UDT 非常適合下列各項:

  • 日期、時間、貨幣及擴充的數值類型

  • Geospatial 應用程式

  • 編碼或加密的資料

在 SQL Server 中開發 UDT 的套裝程式含下列步驟:

  1. 編寫和建立定義 UDT 的組件。 UDT 是使用會產生可驗證程式碼之 .NET Framework Common Language Runtime (CLR) 支援的任何語言所定義。 這包括 Visual C# 和 Visual Basic .NET。 資料會公開為 .NET Framework 類別或結構的欄位及屬性,並且其行為是由類別或結構的方法所定義。

  2. 註冊組件。 UDT 可以透過資料庫專案中的 Visual Studio 使用者介面部署,或使用 Transact-SQL CREATE ASSEMBLY 語句,將包含類別或結構的元件複製到資料庫中。

  3. 在 SQL Server 中建立 UDT。 將元件載入主機資料庫之後,您可以使用 Transact-SQL CREATE TYPE 語句來建立 UDT,並將類別或結構的成員公開為 UDT 的成員。 UDT 僅存在於單一資料庫的內容中,並且一旦註冊後,就不再與建立它們的外部檔案具有相依性。

    注意

    SQL Server 2005 (9.x) 之前,不支援從.NET Framework元件建立的 UDT。 不過,您仍然可以使用 sp_addtype來使用SQL Server別名資料類型。 CREATE TYPE 語法可用來建立原生SQL Server使用者定義資料類型和 UDT。

  4. 使用 UDT 建立資料表、變數或參數從 2005 SQL Server 2005 (9.x) 開始,使用者定義型別可以做為資料表的資料行定義、Transact-SQL 批次中的變數,或是 Transact-SQL 函數或預存程式的引數。

本節內容

建立User-Defined類型
描述如何建立 UDT。

在 SQL Server 中註冊使用者定義型別
說明如何在 SQL Server 中註冊及管理 UDT。

在 SQL Server 中使用使用者定義型別
描述如何使用 UDT 建立查詢。

存取 ADO.NET 中的使用者定義型別
描述如何在 ADO.NET 中使用 .NET Framework Data Provider for SQL Server 使用 UDT。