Delen via


Microsoft Extensibility SDK voor C# voor SQL Server

Van toepassing op: SQL Server 2019 (15.x) en latere versies

Meer informatie over het implementeren van een C#-programma voor SQL Server met behulp van de Microsoft Extensibility SDK voor .NET. De SDK is een interface voor de .NET-taalextensie die wordt gebruikt om gegevens uit te wisselen met SQL Server en C#-code uit te voeren vanuit SQL Server.

De code is open source en vindt u in de GitHub-opslagplaats voor SQL Server Language Extensions.

Implementatievereisten

De SDK-interface definieert een set vereisten waaraan moet worden voldaan voor SQL Server om te communiceren met de .NET-runtime. Als u de SDK wilt gebruiken, moet u enkele implementatieregels in uw hoofdklasse volgen. SQL Server kan vervolgens een specifieke methode uitvoeren in C# en gegevens uitwisselen met behulp van de .NET-taalextensie.

Zie Zelfstudie: Zoeken naar een tekenreeks met reguliere expressies (regex) in C# voor een voorbeeld van hoe u de SDK kunt gebruiken.

SDK-klassen

De SDK bestaat uit verschillende klassen.

  • De abstracte klasse AbstractSqlServerExtensionExecutor definieert de interface die de .NET-extensie gebruikt om gegevens uit te wisselen met SQL Server.

  • Verschillende helperklassen implementeren het CSharpDataSet gegevenssetobject.

In de volgende sectie vindt u beschrijvingen van elke klasse in de SDK. De broncode van de SDK-klassen is beschikbaar in de GitHub-opslagplaats voor SQL Server Language Extensions.

Klasse: AbstractSqlServerExtensionExecutor

De abstracte klasse AbstractSqlServerExtensionExecutor bevat de interface die wordt gebruikt voor het uitvoeren van C#-code door de .NET-taalextensie voor SQL Server.

Uw belangrijkste C#-klasse moet overnemen van deze klasse. Overnemen van deze klasse betekent dat er bepaalde methoden in de klasse zijn die u in uw eigen klasse moet implementeren.

Als u wilt overnemen van deze abstracte klasse, gaat u verder met de abstracte klassenaam in de klassedeclaratie, waarbij MyClass de naam van uw klasse is:

public class MyClass : AbstractSqlServerExtensionExecutor {}

Ten minste moet uw hoofdklasse de Execute(...) methode implementeren.

De methode Execute

De Execute methode is de methode die wordt aangeroepen vanuit SQL Server via de .NET-taalextensie om C#-code aan te roepen vanuit SQL Server. Het is een sleutelmethode waarin u de belangrijkste bewerkingen opneemt die u wilt uitvoeren vanuit SQL Server.

Als u methodeargumenten wilt doorgeven aan C# vanuit SQL Server, gebruikt u de @param parameter in sp_execute_external_script. De Execute methode gebruikt de argumenten op die manier.

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

De methode Init

De Init methode wordt uitgevoerd na de constructor en vóór de Execute methode. Operationes die moeten worden uitgevoerd voordat Execute kan worden gebruikt, kunnen in deze methode worden uitgevoerd.

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

Klasse: CSharpExtension

De klasse CSharpExtension implementeert alle API's voor taalextensies en retourneert resultaten naar de systeemeigen host.

Klasse: CSharpDataSet

De abstracte klasse CSharpDataSet bevat de interface voor het verwerken van invoer- en uitvoergegevens die worden gebruikt door de .NET-extensie.