Microsoft-Erweiterbarkeits-SDK für Java für SQL ServerMicrosoft Extensibility SDK for Java for SQL Server

Anwendungsbereich:Applies to: Ja SQL ServerSQL Server (alle unterstützten Versionen)yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: Ja SQL ServerSQL Server (alle unterstützten Versionen)yesSQL ServerSQL Server (all supported versions)

Erfahren Sie, wie Sie mit dem Microsoft-Erweiterbarkeits-SDK für Java ein Java-Programm für SQL Server implementieren.Learn how you can implement a Java program for SQL Server using the Microsoft Extensibility SDK for Java. 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.The SDK is an interface for the Java language extension that is used to exchange data with SQL Server and to execute Java code from SQL Server.

Das SDK wird als Teil von SQL Server 2019 Release Candidate 1 sowohl unter Windows als auch unter Linux installiert:The SDK is installed as part of SQL Server 2019 Release Candidate 1 on both Windows as Linux:

  • Standardinstallationspfad unter Windows: [Basisverzeichnis der Instanzinstallation]\MSSQL\Binn\mssql-java-lang-extension.jarDefault installation path on Windows: [instance installation home directory]\MSSQL\Binn\mssql-java-lang-extension.jar
  • Standardinstallationspfad unter Linux: /opt/mssql/lib/mssql-java-lang-extension.jarDefault installation path on 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.The code is open source and can be found on the SQL Server Language Extensions GitHub repository.

Anforderungen an die ImplementierungImplementation requirements

Die SDK-Schnittstelle definiert eine Reihe von Anforderungen, die erfüllt sein müssen, damit SQL Server mit der Java-Runtime kommunizieren kann.The SDK interface defines a set of requirements that need to be fulfilled for SQL Server to communicate with the Java runtime. Um das SDK zu verwenden, müssen Sie in Ihrer Hauptklasse einige Implementierungsregeln befolgen.To use the SDK, you need to follow some implementation rules in your main class. SQL Server kann dann eine bestimmte Methode in der Java-Klasse ausführen und über die Java-Spracherweiterung Daten austauschen.SQL Server can then execute a specific method in the Java class and exchange data using the Java language extension.

Ein Beispiel für die Verwendung des SDKs finden Sie unter Tutorial: Suchen nach einer Zeichenfolge mithilfe regulärer Ausdrücke (RegEx) in Java.For an example of how you can use the SDK, see Tutorial: Search for a string using regular expressions (regex) in Java.

SDK-KlassenSDK Classes

Das SDK besteht aus drei Klassen.The SDK consists of three classes.

Zwei abstrakte Klassen definieren die Schnittstelle, die von der Java-Erweiterung zum Austauschen von Daten mit SQL Server verwendet wird:Two abstract classes that define the interface the Java extension uses to exchange data with SQL Server:

  • AbstractSqlServerExtensionExecutorAbstractSqlServerExtensionExecutor
  • AbstractSqlServerExtensionDatasetAbstractSqlServerExtensionDataset

Die dritte Klasse ist eine Hilfsklasse, die eine Implementierung eines Datasetobjekts enthält.The third class is a helper class, which contains an implementation of a data set object. Es handelt sich um eine optionale Klasse, die Sie verwenden können, um sich den Einstieg zu erleichtern.It is an optional class you can use, which makes it easier to get started. Sie können stattdessen auch eine eigene Implementierung einer solchen Klasse verwenden.You can also use your own implementation of such a class instead.

  • PrimitiveDatasetPrimitiveDataset

Im Folgenden finden Sie Beschreibungen jeder Klasse im SDK.Below you will find descriptions of each class in the SDK. Der Quellcode der SDK-Klassen ist im GitHub-Repository für SQL Server-Spracherweiterungen verfügbar.The source code of the SDK classes is available in the SQL Server Language Extensions GitHub repository.

Klasse: AbstractSqlServerExtensionExecutorClass: 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.The abstract class AbstractSqlServerExtensionExecutor contains the interface used to execute Java code by the Java language extension for SQL Server.

Ihre Java-Hauptklasse muss von dieser Klasse erben.Your main Java class needs to inherit from this class. Dies bedeutet, dass die Klasse bestimmte Methoden enthält, die Sie in Ihrer eigenen Klasse implementieren müssen.Inheriting from this class means that there are certain methods in the class you need to implement in your own class.

Damit Ihre Klasse von dieser abstrakten Klasse erben kann, erweitern Sie Ihre Klasse in der Klassendeklaration um den Namen der abstrakten Klasse:To inherit from this abstract class, you extend with the abstract class name in the class declaration:

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

Ihre Hauptklasse muss mindestens die Methode „execute(...)“ implementieren.At a minimum, your main class needs to implement the execute(...) method.

execute-MethodeMethod execute

Die execute-Methode ist die Methode, die von SQL Server über die Java-Spracherweiterung aufgerufen wird, um Java-Code aus SQL Server aufzurufen.The execute method is the method that is called from SQL Server via the Java language extension, to invoke Java code from SQL Server. Es handelt sich um eine Schlüsselmethode, in der Sie die Hauptvorgänge einschließen, die Sie aus SQL Server ausführen möchten.It is a key method where you include the main operations you wish to execute from SQL Server.

Zum Übergeben von Methodenargumenten von SQL Server an Java verwenden Sie den @param-Parameter in sp_execute_external_script.To pass method arguments to Java from SQL Server, use the @param parameter in sp_execute_external_script. Die execute-Methode akzeptiert ihre Argumente auf diese Weise.The method execute takes its arguments that way.

public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params)  {}

init-MethodeMethod init

Die init-Methode wird nach dem Konstruktor und vor der execute-Methode ausgeführt.The init method is executed after the constructor and before the execute method. Alle Vorgänge, die vor „execute(...)“ ausgeführt werden müssen, können in dieser Methode ausgeführt werden.Any operations that need to be performed prior to execute(...) can be done in this method.

public void init(String sessionId, int taskId, int numtask) {}

Klasse: AbstractSqlServerExtensionDatasetClass: AbstractSqlServerExtensionDataset

Die abstrakte Klasse AbstractSqlServerExtensionDataset enthält die Schnittstelle für die Verarbeitung von Eingabe- und Ausgabedaten, die von der Java-Erweiterung verwendet wird.The abstract class AbstractSqlServerExtensionDataset contains the interface for handling input and output data used by the Java extension.

Klasse: PrimitiveDatasetClass: PrimitiveDataset

Die Klasse PrimitiveDataset ist eine Implementierung der Klasse AbstractSqlServerExtensionDataset, die einfache Typen als primitive Arrays speichert.The class PrimitiveDataset is an implementation of AbstractSqlServerExtensionDataset that stores simple types as primitives arrays.

Sie wird im SDK einfach als optionale Hilfsklasse bereitgestellt.It is provided in the SDK simply as an optional helper class. Wenn Sie diese Klasse nicht verwenden, müssen Sie selbst eine Klasse implementieren, die von AbstractSqlServerExtensionDataset erbt.If you don't use this class, you need to implement your own class that inherits from AbstractSqlServerExtensionDataset.

Nächste SchritteNext steps