Microsoft-Erweiterbarkeits-SDK für C# für SQL Server
Gilt für: SQL Server 2019 (15.x) und höhere Versionen
Erfahren Sie, wie Sie mit dem Microsoft-Erweiterbarkeits-SDK für .NET ein C#-Programm für SQL Server implementieren. Das SDK ist eine Schnittstelle für die .NET-Spracherweiterung, die zum Austauschen von Daten mit SQL Server und zum Ausführen von C#-Code aus SQL Server verwendet wird.
Es handelt sich um Open-Source-Code, der im GitHub-Repository für SQL Server-Spracherweiterungen zur Verfügung steht.
Anforderungen an die Implementierung
Die SDK-Schnittstelle definiert eine Reihe von Anforderungen, die erfüllt sein müssen, damit SQL Server mit der .NET-Runtime kommunizieren kann. Um das SDK zu verwenden, müssen Sie in Ihrer Hauptklasse einige Implementierungsregeln befolgen. SQL Server kann dann eine bestimmte Methode in C# ausführen und über die .NET-Spracherweiterung Daten austauschen.
Ein Beispiel für die Verwendung des SDKs finden Sie unter Tutorial: Suchen nach einer Zeichenfolge mithilfe regulärer Ausdrücke (RegEx) in C#.
SDK-Klassen
Das SDK besteht aus verschiedenen Klassen.
Die abstrakte Klasse
AbstractSqlServerExtensionExecutor
definiert die Schnittstelle, die von der .NET-Erweiterung zum Austauschen von Daten mit SQL Server verwendet wird:Mehrere Hilfsklassen implementieren das
CSharpDataSet
Datasetobjekt.
Im folgenden Abschnitt finden Sie Beschreibungen der einzelnen Klassen im SDK. Der Quellcode der SDK-Klassen ist im GitHub-Repository für SQL Server-Spracherweiterungen verfügbar.
Klasse: AbstractSqlServerExtensionExecutor
Die abstrakte Klasse AbstractSqlServerExtensionExecutor
enthält die Schnittstelle, die von der .NET-Spracherweiterung für SQL Server zum Ausführen von C#-Code verwendet wird.
Ihre C#-Hauptklasse muss von dieser Klasse erben. Dies bedeutet, dass die Klasse bestimmte Methoden enthält, die Sie in Ihrer eigenen Klasse implementieren müssen.
Damit Ihre Klasse von dieser abstrakten Klasse erben kann, erweitern Sie Ihre Klasse in der Klassendeklaration um den Namen der abstrakten Klasse, wobei MyClass
den Namen Ihrer Klasse darstellt.
public class MyClass : AbstractSqlServerExtensionExecutor {}
Ihre Hauptklasse muss mindestens die Methode Execute(...)
implementieren.
Die Execute
-Methode
Die Execute
-Methode ist die Methode, die von SQL Server über die .NET-Spracherweiterung aufgerufen wird, um C#-Code aus SQL Server aufzurufen. Es handelt sich um eine Schlüsselmethode, in der Sie die Hauptvorgänge einschließen, die Sie aus SQL Server ausführen möchten.
Zum Übergeben von Methodenargumenten von SQL Server an C# verwenden Sie den @param
-Parameter in sp_execute_external_script
. Die Methode Execute
akzeptiert ihre Argumente auf diese Weise.
public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);
Die Init
-Methode
Die Init
-Methode wird nach dem Konstruktor und vor der Execute
-Methode ausgeführt. Alle Vorgänge, die vor Execute
ausgeführt werden müssen, können in dieser Methode ausgeführt werden.
public virtual void Init(string sessionId, int taskId, int numTasks);
Klasse: CSharpExtension
Die CSharpExtension
-Klasse implementiert alle APIs für Spracherweiterungen und gibt Ergebnisse an den nativen Host zurück.
Klasse: CSharpDataSet
Die abstrakte Klasse CSharpDataSet
enthält die Schnittstelle für die Verarbeitung von Eingabe- und Ausgabedaten, die von der .NET-Erweiterung verwendet wird.