CLR ユーザー定義型
適用対象:SQL Server
SQL Server では、.NET Framework 共通言語ランタイム (CLR) で作成されたアセンブリに対してプログラミングされたデータベース オブジェクトを作成できます。 CLR で用意された豊富なプログラミング モデルを使用できるデータベース オブジェクトには、トリガー、ストアド プロシージャ、関数、集計関数、型などがあります。
Note
SQL Server では、CLR コードを実行する機能が既定で OFF に設定されています。 CLR は、sp_configure
システム ストアド プロシージャを使用して有効にすることができます。
ユーザー定義型 (UDT) を使用してサーバーのスカラー型システムを拡張し、SQL Server データベース内の CLR オブジェクトの格納を有効にすることができます。 UDT には複数の要素を含め、動作を持つことができます。これは、単一の SQL Server システム データ型で構成される従来の別名データ型とは区別されます。
UDT はシステム全体からアクセスされるため、複雑なデータ型の使用はパフォーマンスに悪影響を与える可能性があります。 通常、複合データは従来の行やテーブルを使用する場合に最適になるようにモデル化されています。 SQL Server の UDT は、次の種類のデータに適しています。
- 日付型、時刻型、通貨型、および拡張数値型
- 地理空間アプリケーション
- エンコードされたデータまたは暗号化されたデータ
SQL Server で UDT を開発するプロセスは、次の手順で構成されます。
UDT を定義するアセンブリをコーディングしてビルドします。 UDT は、検証可能なコードを生成する .NET Framework 共通言語ランタイム (CLR) でサポートされている言語のいずれかを使用して定義されます。 これには、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 はいったん登録されると、作成時のベースとなっていた外部ファイルに対する依存関係がなくなります。
UDT を使用してテーブル、変数、またはパラメーターを作成します。 ユーザー定義型は、テーブルの列定義として、Transact-SQL バッチ内の変数として、または Transact-SQL 関数またはストアド プロシージャの引数として使用できます。
このセクションでは、次の操作を行います。
記事 | 形容 |
---|---|
ユーザー定義型の作成 | UDT の作成方法について説明します。 |
SQL Server にユーザー定義型を登録する | SQL Server で UDT を登録および管理する方法について説明します。 |
SQL Server でユーザー定義型を操作する | UDT を使用してクエリを作成する方法について説明します。 |
ADO.NET のユーザー定義型にアクセスする | ADO.NET で .NET Framework Data Provider for SQL Server を使用して UDT を操作する方法について説明します。 |