Microsoft Extensibility SDK pro SQL Server s využitím C#

platí pro: SQL Server 2019 (15.x) a novější verze

Zjistěte, jak můžete implementovat program jazyka C# pro SQL Server pomocí sady Microsoft Extensibility SDK pro .NET. Sada SDK je rozhraní pro rozšíření jazyka .NET, které se používá k výměně dat s SQL Serverem a spouštění kódu jazyka C# z SQL Serveru.

Kód je open source a najdete ho v úložišti SQL Server Language Extensions na GitHubu.

Požadavky na implementaci

Rozhraní SDK definuje sadu požadavků, které je potřeba splnit, aby SQL Server komunikoval s modulem runtime .NET. Pokud chcete použít sadu SDK, musíte dodržovat některá pravidla implementace ve vaší hlavní třídě. SQL Server pak může spustit konkrétní metodu v jazyce C# a vyměňovat data pomocí rozšíření jazyka .NET.

Příklad, jak můžete použít sadu SDK, najdete v Tutoriálu: Vyhledání řetězce pomocí regulárních výrazů v jazyce C#.

Třídy sady SDK

Sada SDK se skládá z několika tříd.

  • Abstraktní třída AbstractSqlServerExtensionExecutor definuje rozhraní, které rozšíření .NET používá k výměně dat s SQL Serverem.

  • Několik pomocných tříd implementuje CSharpDataSet objekt datové sady.

V následující části najdete popisy jednotlivých tříd SDK. Zdrojový kód tříd SDK je k dispozici v úložišti SQL Server Language Extensions na GitHubu.

Třída: AbstractSqlServerExtensionExecutor

Abstraktní třída AbstractSqlServerExtensionExecutor obsahuje rozhraní používané ke spuštění kódu jazyka C# rozšířením jazyka .NET pro SQL Server.

Vaše hlavní třída jazyka C# musí dědit z této třídy. Dědění z této třídy znamená, že existují určité metody ve třídě, kterou potřebujete implementovat ve své vlastní třídě.

Chcete-li dědit z této abstraktní třídy, rozšíříte o abstraktní název třídy v deklaraci třídy, kde MyClass je název vaší třídy:

public class MyClass : AbstractSqlServerExtensionExecutor {}

Minimálně vaše hlavní třída potřebuje implementovat metodu Execute(...) .

Metoda Execute

Metoda Execute je metoda, která je volána z SQL Serveru prostřednictvím jazykového rozšíření .NET pro vyvolání kódu jazyka C# z SQL Serveru. Jedná se o metodu klíče, ve které zahrnete hlavní operace, které chcete spustit z SQL Serveru.

Pokud chcete předat argumenty metody jazyku C# z SQL Serveru, použijte @param parametr v sp_execute_external_scriptsouboru . Metoda Execute přebírá své argumenty tímto způsobem.

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

Metoda Init

Metoda Init se spustí za konstruktorem a před metodou Execute . Veškeré operace, které je třeba provést před Execute, lze provést v této metodě.

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

Třída: CSharpExtension

Třída CSharpExtension implementuje všechna rozhraní API pro rozšíření jazyka a vrací výsledky nativnímu hostiteli.

Třída: CSharpDataSet

Abstraktní třída CSharpDataSet obsahuje rozhraní pro zpracování vstupních a výstupních dat používaných rozšířením .NET.