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

S’applique à : ouiSQL Server 2019 (15.x) - Linux

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

  • La version de Linux doit être prise en charge par SQL Server, mais elle n’inclut pas le moteur Docker. Les versions prises en charge sont les suivantes :

  • Vous devez disposer d’un outil pour l’exécution des commandes T-SQL. Un éditeur de requête est nécessaire pour la configuration et la validation postérieures à l’installation. Nous vous recommandons Azure Data Studio, un outil en téléchargement gratuit qui s’exécute sur Linux.

  • 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.

  • Les extensions de langage sont également prises en charge sur les conteneurs Linux. Nous ne fournissons pas de conteneurs prédéfinis avec les extensions de langage, mais vous pouvez en créer un à partir des conteneurs SQL Server à l’aide d’un exemple de modèle disponible sur GitHub.

  • Les extensions de langage et Machine Learning Services sont installés par défaut sur Clusters Big Data SQL Server. Si vous utilisez Clusters Big Data, vous n’avez pas besoin de suivre les étapes décrites dans cet article. Pour plus d’informations, consultez Utiliser Machine Learning Services (Python et R) sur Clusters Big Data.

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 Infrastructure d’extensibilité utilisée pour l’extension de langage Java et incluant un runtime Java pris en charge

Installation de 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.

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, consultez les détails de Configuration hors connexion.

Commande d’installation RedHat

Vous pouvez installer les extensions de langage pour Java sur RedHat à l’aide de la commande ci-dessous.

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 ci-dessous.

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 ci-dessous.

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

Configuration après installation (obligatoire)

  1. Accorder des autorisations sur Linux

    Vous n’avez pas besoin d’effectuer cette étape 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, consultez 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 fichier jar, consultez Comment créer un fichier jar.

    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 Transact-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.

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 propose un paramètre (ENVIRONMENT_VARIABLES) visant à définir des variables d’environnement spécialement pour le processus hébergeant l’extension. Cette méthode recommandée est la 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 aurez besoin d’un outil de requête pour cette tâche. Azure Data Studio est un bon choix. Les autres outils couramment utilisés, tels que SQL Server Management Studio ou PowerShell, 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
    

    Vous serez invité à accepter le contrat de licence pour le moteur de base de données, à choisir une édition et à définir le mot de passe 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 ci-dessous.

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.

Chemins RedHat/7

Package Emplacement de téléchargement
Packages mssql/extensibility-java https://packages.microsoft.com/rhel/7/mssql-server-2019/

Chemins d’accès Ubuntu/16.04

Package Emplacement de téléchargement
Packages mssql/extensibility-java https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019/pool/main/m/

Chemins SUSE/12

Package Emplacement de téléchargement
Packages mssql/extensibility-java https://packages.microsoft.com/sles/12/mssql-server-2019/

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 être suffisamment proches pour vous permettre de déterminer les fichiers à obtenir.

# Core packages
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 existe une 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 sur Linux.

Nom de la 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 de mémoire CGroups, 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 CGroups, 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 CGroups 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 CGroups, où la valeur sur la ligne 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 CGroups 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 CGroups pids, où la valeur est pids.current

Étapes suivantes

Les développeurs peuvent démarrer avec quelques exemples simples et découvrir les principes de base du fonctionnement de Java avec SQL Server. Pour l’étape suivante, consultez les liens suivants :