CLR 使用者定義型別

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

[!附註]

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

從 SQL Server 2005 開始,您可以使用使用者定義型別 (UDT) 來擴充伺服器的純量類型系統,好讓 CLR 物件儲存在 SQL Server 資料庫中。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 之前,不支援從 .NET Framework 組件建立的 UDT。但是,您仍然可以利用 sp_addtype,在 SQL Server 2005 和更新版本中使用 SQL Server 別名資料類型。CREATE TYPE 語法可用來建立原生 SQL Server 使用者定義資料類型及 UDT。

  4. 使用 UDT 建立資料表、變數或參數:從 SQL Server 2005 開始,使用者定義型別可以做為資料表的資料行定義、Transact-SQL 批次中的變數,或是 Transact-SQL 函數或預存程序的引數。如需詳細資訊,請參閱<使用 CLR 使用者定義型別>。

本章節內容