CLR (共通言語ランタイム) 統合によるデータベース オブジェクトの構築

SQL Server と .NET Framework CLR (共通言語ランタイム) との統合を使用してデータベース オブジェクトを構築できます。Microsoft SQL Server の内部で実行されるマネージ コードを "CLR ルーチン" と呼びます。CLR ルーチンには、次のものがあります。

  • スカラー UDF (ユーザー定義スカラー値関数)

  • ユーザー定義 TVF (テーブル値関数)

  • UDP (ユーザー定義プロシージャ)

  • ユーザー定義トリガー

CLR ルーチンは、マネージ コード内ではそれぞれ同じ構造になります。CLR ルーチンは、クラスの public static (Microsoft Visual Basic .NET では shared) メソッドにマップされます。ルーチン以外に、.NET Framework を使用して UDT (ユーザー定義型) やユーザー定義集計関数を定義することもできます。UDT とユーザー定義集計は、.NET Framework クラス全体にマップされます。

各種類の .NET Framework ルーチンには Transact-SQL 宣言があり、SQL Server で同等の Transact-SQL を使用できる任意の場所で使用できます。たとえば、スカラー UDF は任意のスカラー式で使用できます。また、TVF は任意の FROM 句で使用できます。プロシージャは、EXEC ステートメントやクライアント アプリケーションから呼び出すことができます。

注意

効果的であるとクエリ オプティマイザーで判断された場合は、共通言語ランタイムでの CLR オブジェクト (ユーザー定義関数、ユーザー定義型、またはトリガー) の実行を複数のスレッドで行うことができます (並列プラン)。ただし、ユーザー定義関数がデータにアクセスする場合は、直列プランで実行されます。SQL Server 2008 よりも前のサーバー バージョンで実行したときに、ユーザー定義関数に LOB パラメーターが含まれていたり、ユーザー定義関数から値が返される場合も、直列プランで実行する必要があります。詳細については、「並列クエリ処理」を参照してください。

Visual Studio .NET 2003 は、CLR 統合プログラミングには使用できない点に注意してください。SQL Server には .NET Framework がプレインストールされていますが、Visual Studio .NET 2003 では .NET Framework 2.0 アセンブリを使用できません。

このセクションのトピックでは、次の内容について説明します。