CLR ユーザー定義型

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

ms131120.note(ja-jp,SQL.90).gifメモ :
SQL Server 2005 では、CLR コードを実行する機能は既定で無効になっています。CLR を有効にするには、sp_configure システム ストアド プロシージャを使用します。

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

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

  • 日付型、時刻型、通貨型、および拡張数値型
  • 地理空間アプリケーション
  • エンコードされたデータまたは暗号化されたデータ

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

  1. UDT を定義するアセンブリをコーディングしてビルドします。   UDT の定義には、Microsoft .NET Framework CLR (共通言語ランタイム) でサポートされている、検証可能なコードを生成する任意の言語を使用します。このような言語には、Microsoft Visual C# や Microsoft Visual Basic .NET があります。データは、.NET Framework のクラスまたは構造体のフィールドやプロパティとして公開され、動作はクラスまたは構造体のメソッドによって定義されます。
  2. アセンブリを登録します。   UDT は、Microsoft Visual Studio のユーザー インターフェイスを使用してデータベース プロジェクトに配置することも、Transact-SQL CREATE ASSEMBLY ステートメントを使用して、クラスまたは構造体を含むアセンブリをデータベースにコピーすることもできます。
  3. SQL Server で UDT を作成します。   アセンブリがホスト データベースに読み込まれた後、Transact-SQL CREATE TYPE ステートメントを使用して UDT を作成し、UDT のメンバとしてクラスまたは構造体のメンバを公開します。UDT は 1 つのデータベースのコンテキストにのみ存在します。UDT はいったん登録されると、作成時のベースとなっていた外部ファイルに対する依存関係がなくなります。
    ms131120.note(ja-jp,SQL.90).gifメモ :
    .NET Framework アセンブリから作成した UDT は、以前のバージョンの SQL Server ではサポートされません。ただし、SQL Server の別名データ型は sp_addtype を使用することで、SQL Server 2005 でもサポートされます。CREATE TYPE 構文を使用すると、ネイティブの SQL Server ユーザー定義データ型と UDT の両方を作成できます。
  4. **UDT を使用したテーブル、変数、またはパラメータを作成します。   **SQL Server 2005 では、ユーザー定義型を、テーブルの列定義、Transact-SQL バッチの変数、Transact-SQL 関数またはストアド プロシージャの引数として使用できます。詳細については、「CLR ユーザー定義型の使用」を参照してください。

このセクションの内容