Microsoft-Erweiterbarkeits-SDK für Java 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 Java ein Java-Programm für SQL Server implementieren. Das SDK ist eine Schnittstelle für die Java-Spracherweiterung, die zum Austauschen von Daten mit SQL Server und zum Ausführen von Java-Code aus SQL Server verwendet wird.
Das SDK wird als Teil von SQL Server 2019 (15.x) und höheren Versionen sowohl unter Windows als auch unter Linux installiert:
- Standardinstallationspfad unter Windows:
<instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
- Standardinstallationspfad unter Linux:
/opt/mssql/lib/mssql-java-lang-extension.jar
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 Java-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 der Java-Klasse ausführen und über die Java-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 Java.
SDK-Klassen
Das SDK besteht aus drei Klassen.
Zwei abstrakte Klassen definieren die Schnittstelle, die von der Java-Erweiterung zum Austauschen von Daten mit SQL Server verwendet wird:
AbstractSqlServerExtensionExecutor
AbstractSqlServerExtensionDataset
Die dritte Klasse ist eine Hilfsklasse, die eine Implementierung eines Datasetobjekts enthält. Es handelt sich um eine optionale Klasse, die Sie verwenden können, um sich den Einstieg zu erleichtern. Sie können stattdessen auch eine eigene Implementierung einer solchen Klasse verwenden.
PrimitiveDataset
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 Java-Spracherweiterung für SQL Server zum Ausführen von Java-Code verwendet wird.
Ihre Java-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:
public class <MyClass> extends AbstractSqlServerExtensionExecutor {}
Ihre Hauptklasse muss mindestens die Methode „execute(...)“ implementieren.
execute-Methode
Die execute-Methode ist die Methode, die von SQL Server über die Java-Spracherweiterung aufgerufen wird, um Java-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 Java verwenden Sie den @param
-Parameter in sp_execute_external_script
. Die Methode execute
akzeptiert ihre Argumente auf diese Weise.
public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params) {}
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 void init(String sessionId, int taskId, int numtask) {}
Klasse: AbstractSqlServerExtensionDataset
Die abstrakte Klasse AbstractSqlServerExtensionDataset
enthält die Schnittstelle für die Verarbeitung von Eingabe- und Ausgabedaten, die von der Java-Erweiterung verwendet wird.
Klasse: PrimitiveDataset
Die Klasse PrimitiveDataset
ist eine Implementierung der Klasse AbstractSqlServerExtensionDataset
, die einfache Typen als primitive Arrays speichert.
PrimitiveDataset
wird im SDK als optionale Hilfsklasse bereitgestellt. Wenn Sie diese Klasse nicht verwenden, müssen Sie selbst eine Klasse implementieren, die von AbstractSqlServerExtensionDataset
erbt.