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 を開発する処理は、次の手順から構成されています。
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 より前のバージョンでは、.NET Framework アセンブリから作成された UDT がサポートされていませんでした。ただし、SQL Server 2005 以降でも、sp_addtype を使用することで SQL Server の別名データ型を引き続き使用できます。CREATE TYPE 構文を使用すると、ネイティブの SQL Server ユーザー定義データ型と UDT の両方を作成できます。
UDT を使用したテーブル、変数、またはパラメーターを作成します。 SQL Server 2005 以降では、ユーザー定義型を、テーブルの列定義、Transact-SQL バッチの変数、Transact-SQL 関数またはストアド プロシージャの引数として使用できます。その他の詳細については、「CLR ユーザー定義型の使用」を参照してください。
このセクションの内容
ユーザー定義型の作成
UDT の作成方法について説明します。SQL Server でのユーザー定義型の登録
SQL Server での UDT の登録方法と管理方法について説明します。SQL Server でのユーザー定義型の使用
UDT を使用してクエリを作成する方法について説明します。ADO.NET でのユーザー定義型へのアクセス
ADO.NET の .NET Framework Data Provider for SQL Server を使用して UDT を操作する方法について説明します。