Kit SDK d’extensibilité Microsoft pour Java pour SQL Server

S’applique à : SQL Server 2019 (15.x) et versions ultérieures

Découvrez comment vous pouvez implémenter un programme Java pour SQL Server avec le SDK d’extensibilité Microsoft pour Java. Le kit SDK est une interface pour l’extension de langage Java, qui permet d’échanger des données avec SQL Server et d’exécuter du code Java à partir de SQL Server.

Le kit SDK est installé dans le cadre de SQL Server 2019 (15.x) et versions ultérieures, sur Windows et Linux :

  • Chemin d'installation par défaut sur Windows : <instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
  • Chemin d'installation par défaut sur Linux : /opt/mssql/lib/mssql-java-lang-extension.jar

Le code est open source et se trouve dans le dépôt GitHub des extensions de langage SQL Server.

Exigences d’implémentation

L’interface du kit SDK définit un ensemble d’exigences à remplir pour permettre à SQL Server de communiquer avec le runtime Java. Pour utiliser le kit SDK, vous devez suivre certaines règles d’implémentation dans votre classe principale. SQL Server peut ensuite exécuter une méthode spécifique dans la classe Java et échanger des données à l’aide de l’extension de langage Java.

Pour obtenir un exemple d’utilisation du kit SDK, consultez Tutoriel : Rechercher une chaîne à l’aide d’expressions régulières (regex) en Java.

Classes du kit SDK

Le kit SDK comprend trois classes.

Deux classes abstraites qui définissent l’interface utilisée par l’extension Java pour échanger des données avec SQL Server :

  • AbstractSqlServerExtensionExecutor
  • AbstractSqlServerExtensionDataset

La troisième classe est une classe d’assistance, qui contient une implémentation d’un objet de jeu de données. Il s'agit d'une classe facultative qui facilite la prise en main. Vous pouvez également utiliser votre propre implémentation d’une telle classe à la place.

  • PrimitiveDataset

Dans la section suivante, vous trouverez des descriptions de chaque classe dans le kit de développement logiciel (SDK). Le code source des classes du kit SDK est disponible dans le dépôt GitHub des extensions de langage SQL Server.

Classe : AbstractSqlServerExtensionExecutor

La classe abstraite AbstractSqlServerExtensionExecutor contient l'interface qui permet l'exécution du code Java par l'extension de langage Java pour SQL Server.

Votre classe Java principale doit hériter de cette classe. Hériter de cette classe signifie que vous devez implémenter certaines méthodes de la classe dans votre propre classe.

Pour hériter de cette classe abstraite, étendez-la à l’aide de son nom de classe abstraite dans la déclaration de classe :

public class <MyClass> extends AbstractSqlServerExtensionExecutor {}

Au minimum, votre classe principale doit implémenter la méthode execute (...).

Méthode execute

La méthode execute est la méthode appelée à partir de SQL Server via l’extension de langage Java, et qui permet d’appeler du code Java à partir de SQL Server. Il s'agit d'une méthode clé dans laquelle vous incluez les principales opérations à exécuter à partir de SQL Server.

Pour passer des arguments de méthode à Java à partir de SQL Server, utilisez le paramètre @param dans sp_execute_external_script. La méthode execute accepte ses arguments de cette manière.

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

Méthode init

La méthode init est exécutée après le constructeur et avant la méthode execute. Toutes les opérations qui doivent être effectuées avant execute(...) peuvent l'être avec cette méthode.

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

Classe : AbstractSqlServerExtensionDataset

La classe abstraite AbstractSqlServerExtensionDataset contient l'interface de gestion des données d'entrée et de sortie utilisées par l'extension Java.

Classe : PrimitiveDataset

La classe PrimitiveDataset est une implémentation de AbstractSqlServerExtensionDataset qui stocke les types simples en tant que tableaux de primitives.

PrimitiveDataset est fournie dans le kit SDK en tant que classe d'assistance facultative. Si vous n'utilisez pas cette classe, vous devez implémenter votre propre classe, qui hérite de AbstractSqlServerExtensionDataset.