次の方法で共有


SQL Server 用の Microsoft Extensibility SDK for C#

適用対象: SQL Server 2019 (15.x) 以降のバージョン

Microsoft Extensibility SDK for .NET を使用して、SQL Server 用の C# プログラムを実装する方法について説明します。 この SDK は、SQL Server とデータを交換し、SQL Server から C# コードを実行するために使用される .NET 言語拡張のインターフェイスです。

このコードはオープンソースであり、SQL Server 言語拡張の GitHub リポジトリに掲載されています。

実装の要件

この SDK のインターフェイスには、.NET ランタイムと通信するために SQL Server に満たす必要がある一連の要件が定義されています。 この SDK を使用するには、メイン クラスのいくつかの実装ルールに従う必要があります。 SQL Server で .NET 言語拡張を使用し、C# の特定のメソッドを実行してデータを交換することができます。

SDK の使用方法の例については、「チュートリアル: C# で正規表現 (regex) を使用して文字列を検索する」を参照してください。

SDK のクラス

SDK は、複数のクラスで構成されています。

  • 抽象クラス AbstractSqlServerExtensionExecutor は、SQL Server との間でデータを交換するために .NET 拡張機能で使用されるインターフェイスを定義します。

  • 複数のヘルパー クラスは、CSharpDataSet データ セット オブジェクトを実装します。

次のセクションでは、SDK の各クラスについて説明します。 SDK クラスのソース コードは、SQL Server 言語拡張の GitHub リポジトリで入手できます。

クラス: AbstractSqlServerExtensionExecutor

抽象クラス AbstractSqlServerExtensionExecutor には、SQL Server の .NET 言語拡張機能によって C# コードを実行するために使用されるインターフェイスが含まれています。

メイン C# クラスは、このクラスを継承する必要があります。 このクラスから継承するということは、独自のクラスで実装する必要がある特定のメソッドがクラスにあることを意味します。

この抽象クラスから継承するには、クラス宣言で抽象クラス名を使用して拡張します (ここで、MyClass はクラスの名前)。

public class MyClass : AbstractSqlServerExtensionExecutor {}

少なくとも、メイン クラスは Execute(...) メソッドを実装する必要があります。

Execute メソッド

Execute メソッドは、SQL Server から C# コードを呼び出すために、.NET 言語拡張を介して SQL Server から呼び出されるメソッドです。 これは、SQL Server から実行する主な操作を含める重要なメソッドです。

メソッド引数を SQL Server から C# に渡すには、sp_execute_external_script@param パラメーターを使用します。 Execute メソッドは引数をそのように受け取ります。

public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);

Init メソッド

Init メソッドは、コンストラクターの後、Execute メソッドの前に実行されます。 Execute の前に実行する必要がある操作はすべてこのメソッドで実行できます。

public virtual void Init(string sessionId, int taskId, int numTasks);

クラス: CSharpExtension

クラス CSharpExtension は、すべての言語拡張機能 API を実装し、結果をネイティブ ホストに返します。

クラス: CSharpDataSet

抽象クラス CSharpDataSet には、.NET 拡張機能によって使用される入出力データを処理するためのインターフェイスが含まれています。