次の方法で共有


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 を開発するプロセスは、次の手順で構成されます。

  1. UDT を定義するアセンブリをコーディングしてビルドします。 UDT は、検証可能なコードを生成する .NET Framework 共通言語ランタイム (CLR) でサポートされている言語のいずれかを使用して定義されます。 これには、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 はいったん登録されると、作成時のベースとなっていた外部ファイルに対する依存関係がなくなります。

  4. 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 を操作する方法について説明します。