Installation de l’extension de langage Java SQL Server sur Linux

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

Découvrez comment installer le composant Extension de langage Java pour SQL Server sur Linux. L'extension de langage Java fait partie des Extensions de langage SQL Server. Il s'agit d'un module complémentaire du moteur de base de données.

Bien que vous puissiez installer le moteur de base de données et les extensions de langage simultanément, il est recommandé d'installer et de configurer le moteur de base de données SQL Server en premier afin de pouvoir résoudre les problèmes avant d'ajouter d'autres composants.

Prérequis

  • L’emplacement des packages pour les extensions Java se trouve dans les référentiels source de SQL Server Linux. Si vous avez déjà configuré des référentiels source pour l'installation du moteur de base de données, vous pouvez exécuter les commandes d'installation du package mssql-server-extensibility-java à l'aide de la même inscription de référentiel.

Liste des packages

Sur un appareil connecté à Internet, les packages sont téléchargés et installés indépendamment du moteur de base de données à l'aide du programme d'installation de package pour chaque système d'exploitation. Le tableau suivant décrit tous les packages disponibles.

Nom du package S’applique à Description
mssql-server-extensibility Toutes les langues Infrastructure d’extensibilité utilisée pour l’extension de langage Java
mssql-server-extensibility-java Java S'applique à : SQL Server 2019 (15.x) sur Linux uniquement

Infrastructure d’extensibilité utilisée pour l’extension de langage Java et incluant un runtime Java pris en charge

Installer l’extension de langage Java

Vous pouvez installer les extensions de langage et Java sur Linux en installant mssql-server-extensibility-java. Lorsque vous installez mssql-server-extensibility-java, le package installe automatiquement JRE 11 s'il n'est pas déjà installé. Cela ajoute également le chemin d'accès JVM à une variable d'environnement appelée JRE_HOME.

Pour activer l’extension de langage Java, générez un binaire personnalisé en suivant les instructions de la page Extension de langage Java sur GitHub.

Notes

Sur un serveur connecté à Internet, les dépendances de package sont téléchargées et installées dans le cadre de l’installation du package principal. Si votre serveur n’est pas connecté à Internet, vous trouverez plus de détails dans Configuration hors connexion.

Vous pouvez télécharger et installer n’importe quel runtime Java comme souhaité, y compris la dernière build Microsoft d’OpenJDK ou le runtime Java officiellement sous licence. À partir de SQL Server 2022 (16.x), le programme d'installation de SQL Server n'installe aucun runtime Java.

Pour activer l’extension de langage Java, générez un binaire personnalisé en suivant les instructions de la page Extension de langage Java sur GitHub.

Commande d'installation de Red Hat

Vous pouvez installer les extensions de langage pour Java sur Red Hat à l'aide de la commande suivante.

Conseil

Si possible, exécutez yum clean all pour actualiser les packages sur le système avant l’installation.

# Install as root or sudo
sudo yum install mssql-server-extensibility-java

Commande d’installation Ubuntu

Vous pouvez installer les extensions de langage pour Java sur Ubuntu à l'aide de la commande suivante.

Conseil

Si possible, exécutez apt-get update pour actualiser les packages sur le système avant l’installation. En outre, il se peut que certaines images de Docker d’Ubuntu ne disposent pas de l’option de transport https apt. Pour l’installer, utilisez apt-get install apt-transport-https.

# Install as root or sudo
sudo apt-get install mssql-server-extensibility-java

Commande d’installation de SUSE

Vous pouvez installer les extensions de langage pour Java sur SUSE à l'aide de la commande suivante.

# Install as root or sudo
sudo zypper install mssql-server-extensibility-java

Configuration après installation (obligatoire)

  1. Accorder des autorisations sur Linux

    Cette étape n'est pas nécessaire si vous utilisez des bibliothèques externes. La façon de procéder recommandée est d’utiliser des bibliothèques externes. Pour obtenir de l'aide sur la création d'une bibliothèque externe à partir de votre fichier jar, reportez-vous à CREATE EXTERNAL LIBRARY.

    Si vous n'utilisez pas de bibliothèques externes, vous devez fournir à SQL Server les autorisations nécessaires pour exécuter les classes Java dans votre fichier jar.

    Pour accorder l'accès en lecture et d'exécution à un fichier jar, exécutez la commande chmod suivante sur le fichier jar. Nous vous recommandons de toujours placer vos fichiers de classe dans un fichier jar lorsque vous travaillez avec SQL Server. Pour obtenir de l’aide sur la création d’un jar, consultez Créer un fichier jar Java à partir de fichiers de classe.

    chmod ug+rx <MyJarFile.jar>
    

    Vous devez également accorder à mssql_satellite les autorisations pour le fichier jar à lire/exécuter.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    La configuration supplémentaire s’effectue principalement avec l’outil mssql-conf.

  2. Ajoutez le compte d'utilisateur mssql utilisé pour exécuter le service SQL Server. Cela est requis si vous n’avez pas exécuté l’installation précédemment.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Activez l’accès réseau sortant. L’accès réseau sortant est désactivé par défaut. Pour activer les requêtes sortantes, définissez la propriété booléenne outboundnetworkaccess à l'aide de l'outil mssql-conf. Pour plus d’informations, consultez Configurer SQL Server sur Linux avec mssql-conf.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Redémarrez le service SQL Server Launchpad et l'instance du moteur de base de données pour lire les valeurs mises à jour à partir du fichier INI. Un message de redémarrage vous rappelle chaque fois qu’un paramètre relatif à l’extensibilité est modifié.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Activez l'exécution du script externe à l'aide d'Azure Data Studio ou d'un autre outil comme SQL Server Management Studio (Windows uniquement) qui exécute T-SQL.

    EXEC sp_configure 'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  6. Redémarrez le service mssql-launchpadd.

  7. Pour chaque base de données dans laquelle vous souhaitez utiliser des extensions de langage, vous devez inscrire le langage externe avec CREATE EXTERNAL LANGUAGE. Consultez la procédure décrite dans la section suivante.

Inscrire le langage externe

Pour chaque base de données dans laquelle vous souhaitez utiliser des extensions de langage, vous devez inscrire le langage externe avec CREATE EXTERNAL LANGUAGE.

L’exemple suivant ajoute un langage externe appelé Java à une base de données sur SQL Server sur Linux.

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'/opt/mssql-extensibility/lib/java-lang-extension.tar.gz',
    FILE_NAME = 'javaextension.so',
    ENVIRONMENT_VARIABLES = N'{"JRE_HOME":"/opt/mssql/lib/zulu-jre-11"}');

Pour l’extension Java, la variable d’environnement JRE_HOME est utilisée pour déterminer le chemin à suivre pour trouver et initialiser la Machine virtuelle Java.

La DDL CREATE EXTERNAL LANGUAGE visant à définir un paramètre (ENVIRONMENT_VARIABLES) pour définir des variables d'environnement spécialement pour le processus hébergeant l'extension. Ce processus recommandé est le plus efficace pour définir les variables d'environnement exigées par les extensions de langage externe.

Pour plus d’informations, consultez CRÉER UN LANGAGE EXTERNE.

Vérifier l'installation

L'intégration des fonctionnalités Java n'inclut pas les bibliothèques, mais vous pouvez exécuter grep -r JRE_HOME /etc pour confirmer la création de la variable d'environnement JAVA_HOME.

Pour valider l’installation, exécutez un script T-SQL qui exécute une procédure stockée système qui appelle Java. Vous avez besoin d'un outil de requête pour cette tâche. Azure Data Studio est un bon choix. Les autres outils couramment utilisés, notamment SQL Server Management Studio, sont uniquement disponibles sous Windows. Si vous disposez d'un ordinateur Windows avec ces outils, utilisez-le pour vous connecter à votre installation Linux du moteur de base de données.

Installation complète de SQL Server et de l’extension de langage Java

Il est possible d'installer et de configurer le moteur de base de données et l'extension de langage Java en une seule procédure. Il suffit pour cela d'ajouter des packages Java et des paramètres à une commande qui installe le moteur de base de données.

  1. Fournissez une ligne de commande qui comprend le moteur de base de données ainsi que des fonctionnalités d'extension de langage.

    Vous pouvez ajouter l'extensibilité Java à une installation du moteur de base de données.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Acceptez les contrats de licence et terminez la configuration consécutive à l’installation. Utilisez l'outil mssql-conf pour cette tâche.

    sudo /opt/mssql/bin/mssql-conf setup
    

    Cette étape vous invite à accepter l’accord de licence du moteur de base de données, à choisir une édition et à définir le mot de passe de l'administrateur.

  3. Redémarrez le service si vous y êtes invité.

    sudo systemctl restart mssql-server.service
    

Installation sans assistance

Utilisez l'installation sans assistance du moteur de base de données et ajoutez les packages pour mssql-server-extensibility-java.

Installation hors connexion

Suivez les instructions d'installation hors connexion pour connaître les étapes d’installation des packages. Recherchez votre site de téléchargement, puis téléchargez des packages spécifiques à l'aide de la liste de packages plus loin dans cette section.

Conseil

Plusieurs outils de gestion des packages fournissent des commandes qui peuvent vous aider à déterminer les dépendances du package. Pour yum, utilisez sudo yum deplist [package]. Pour Ubuntu, utilisez sudo apt-get install --reinstall --download-only [package name], suivi de dpkg -I [package name].deb.

Site de téléchargement

Vous pouvez télécharger les packages sur https://packages.microsoft.com/. Tous les packages conçus pour Java sont colocalisés avec le package du moteur de base de données.

Chemin de téléchargement

Package Distribution Emplacement de téléchargement
mssql/extensibility-java packages Red Hat 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE v15 https://packages.microsoft.com/sles/15/mssql-server-2019/
mssql/extensibility-java packages Ubuntu 20.04 https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/

Liste des packages

Selon les extensions que vous souhaitez utiliser, téléchargez les packages nécessaires pour un langage spécifique. Les noms de fichiers exacts incluent des informations sur la plateforme dans le suffixe, mais les noms de fichier ci-dessous devraient vous permettre de déterminer les fichiers à obtenir.

  • Packages principaux

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Limites

L'authentification implicite n'est actuellement pas disponible sur Linux, ce qui signifie que vous ne pouvez pas vous reconnecter au serveur à partir de Java en cours d'exécution pour accéder à des données ou à d'autres ressources.

Gouvernance des ressources

Il y a parité entre Linux et Windows pour la gouvernance des ressources pour les pools de ressources externes, mais les statistiques pour sys.dm_resource_governor_external_resource_pools ont actuellement des unités différentes sous Linux.

Remarque

Les statistiques du tableau suivant proviennent des sous-systèmes de groupes de contrôle (cgroups) spécifiés.

Nom de colonne Description Valeur sur Linux
peak_memory_kb Quantité maximale de mémoire utilisée pour le pool de ressources. Sur Linux, cette statistique provient du sous-système memory, où la valeur est memory.max_usage_in_bytes
write_io_count Total des entrées/sorties d'écriture émises depuis que les statistiques du gouverneur de ressources ont été réinitialisées. Sur Linux, cette statistique provient du sous-système blkio, où la valeur de la ligne d'écriture est blkio.throttle.io_serviced
read_io_count Total des entrées/sorties de lecture émises depuis que les statistiques du gouverneur de ressources ont été réinitialisées. Sur Linux, cette statistique provient du sous-système blkio, où la valeur de la ligne de lecture est blkio.throttle.io_serviced
total_cpu_kernel_ms Le temps du noyau utilisateur cumulatif de l'UC, en millisecondes, depuis que les statistiques du gouverneur de ressources ont été réinitialisées. Sur Linux, cette statistique provient du sous-système cpuacct, où la valeur de la ligne de l'utilisateur est cpuacct.stat
total_cpu_user_ms Le temps utilisateur cumulatif de l'UC, en millisecondes, depuis que les statistiques du gouverneur de ressources ont été réinitialisées. Sur Linux, cette statistique provient du sous-système cpuacct, où la valeur sur la ligne système est cpuacct.stat
active_processes_count Nombre de processus externes en cours d’exécution au moment de la requête. Sur Linux, cette statistique provient du sous-système pids, où la valeur est pids.current