CLR ユーザー定義型
適用対象:SQL Server
SQL Serverでは、.NET Framework共通言語ランタイム (CLR) で作成されたアセンブリに対してプログラムされたデータベース オブジェクトを作成できます。 CLR で用意された豊富なプログラミング モデルを使用できるデータベース オブジェクトには、トリガー、ストアド プロシージャ、関数、集計関数、型などがあります。
注意
SQL Serverでは、CLR コードを実行する機能は既定で OFF に設定されています。 CLR は、 sp_configure システム ストアド プロシージャを使用して有効にすることができます。
SQL Server 2005 (9.x) 以降では、ユーザー定義型 (UDT) を使用してサーバーのスカラー型システムを拡張し、SQL Server データベース内の CLR オブジェクトのストレージを有効にすることができます。 UDT は複数の要素を持つことができ、動作を定義できます。この点は、1 つの SQL Server システム データ型から構成される従来の別名データ型と異なります。
UDT はシステム全体からアクセスされるので、UDT を複合データ型に使用すると、パフォーマンスに悪影響を与えることがあります。 通常、複合データは従来の行やテーブルを使用する場合に最適になるようにモデル化されています。 SQL Serverの UDT は、次に適しています。
日付型、時刻型、通貨型、および拡張数値型
地理空間アプリケーション
エンコードされたデータまたは暗号化されたデータ
SQL Serverで UDT を開発するプロセスは、次の手順で構成されます。
UDT を定義するアセンブリをコーディングしてビルドします。 UDT は、検証可能なコードを生成する .NET Framework 共通言語ランタイム (CLR) でサポートされる任意の言語を使用して定義されます。 このような言語には、Visual C# や Visual Basic .NET があります。 データは、.NET Framework のクラスまたは構造体のフィールドやプロパティとして公開され、動作はクラスまたは構造体のメソッドによって定義されます。
アセンブリを登録します。 UDT は、データベース プロジェクトの Visual Studio ユーザー インターフェイスを使用して、またはクラスまたは構造体を含むアセンブリをデータベースにコピーする Transact-SQL CREATE ASSEMBLY ステートメントを使用して配置できます。
SQL Server で UDT を作成します。 アセンブリがホスト データベースに読み込まれたら、Transact-SQL CREATE TYPE ステートメントを使用して UDT を作成し、クラスまたは構造体のメンバーを UDT のメンバーとして公開します。 UDT は 1 つのデータベースのコンテキストにのみ存在します。UDT はいったん登録されると、作成時のベースとなっていた外部ファイルに対する依存関係がなくなります。
注意
SQL Server 2005 (9.x) より前は、.NET Framework アセンブリから作成された UDT はサポートされていませんでした。 ただし、sp_addtypeを使用して、SQL Server別名データ型を使用することもできます。 CREATE TYPE 構文は、ネイティブ SQL Serverユーザー定義データ型と UDT の両方を作成するために使用できます。
UDT を使用してテーブル、変数、またはパラメーターを作成するSQL Server 2005 (9.x) 以降では、テーブルの列定義として、Transact-SQL バッチの変数として、または Transact-SQL 関数またはストアド プロシージャの引数として、ユーザー定義型を使用できます。
このセクションの内容
User-Defined型の作成
UDT の作成方法について説明します。
SQL Server でのユーザー定義型の登録
SQL Serverで UDT を登録および管理する方法について説明します。
SQL Server でのユーザー定義型の使用
UDT を使用してクエリを作成する方法について説明します。
ADO.NET でのユーザー定義型へのアクセス
ADO.NET のSQL Server用.NET Framework データ プロバイダーを使用して UDT を操作する方法について説明します。