CLR ユーザー定義型

SQL Server では、.NET Framework CLR (共通言語ランタイム) で作成されているアセンブリでプログラミングしたデータベース オブジェクトを作成できます。CLR で用意された豊富なプログラミング モデルを使用できるデータベース オブジェクトには、トリガ、ストアド プロシージャ、関数、集計関数、型などがあります。

注意注意

SQL Server では、CLR コードを実行する機能が既定で無効になっています。CLR を有効にするには、sp_configure システム ストアド プロシージャを使用します。

SQL Server 2005 以降では、UDT (ユーザー定義型) を使用してサーバーのスカラ型システムを拡張することで、SQL Server データベースに CLR オブジェクトを格納できます。1 つの SQL Server システム データ型で構成される従来の別名データ型とは異なり、UDT には複数の要素や複数の動作を含めることができます。

UDT はシステム全体からアクセスされるので、UDT を複合データ型に使用すると、パフォーマンスに悪影響を与えることがあります。通常、複合データは従来の行やテーブルを使用する場合に最適になるようにモデル化されています。SQL Server の UDT は、次のような場合に適しています。

  • 日付型、時刻型、通貨型、および拡張数値型

  • 地理空間アプリケーション

  • エンコードされたデータまたは暗号化されたデータ

SQL Server で UDT を開発する処理は、次の手順から構成されています。

  1. UDT を定義するアセンブリをコーディングしてビルドします。   UDT の定義には、.NET Framework 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 は 1 つのデータベースのコンテキストにのみ存在します。UDT はいったん登録されると、作成時のベースとなっていた外部ファイルに対する依存関係がなくなります。

    注意注意

    SQL Server 2005 より前のバージョンでは、.NET Framework アセンブリから作成された UDT がサポートされていませんでした。ただし、SQL Server 2005 および SQL Server 2008 でも、sp_addtype を使用することで SQL Server の別名データ型を引き続き使用できます。CREATE TYPE 構文を使用すると、ネイティブの SQL Server ユーザー定義データ型と UDT の両方を作成できます。

  4. **UDT を使用したテーブル、変数、またはパラメータを作成します。**SQL Server 2005 以降では、ユーザー定義型を、テーブルの列定義、Transact-SQL バッチの変数、Transact-SQL 関数またはストアド プロシージャの引数として使用できます。その他の詳細については、「CLR ユーザー定義型の使用」を参照してください。

このセクションの内容