Share via


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.