Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
AbstractSqlServerExtensionExecutordefinieert de interface die de .NET-extensie gebruikt om gegevens uit te wisselen met SQL Server.Verschillende helperklassen implementeren het
CSharpDataSetgegevenssetobject.
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.