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
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 Transact-SQL (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 à 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 Exécuter des scripts Python et R avec Machine Learning Services sur des clusters Big Data SQL Server 2019.
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)
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 fichierjar
. Nous vous recommandons de toujours placer vos fichiers de classe dans un fichierjar
lorsque vous travaillez avec SQL Server. Pour obtenir de l’aide sur la création d’unjar
, 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 fichierjar
à lire/exécuter.chown mssql_satellite:mssql_satellite <MyJarFile.jar>
La configuration supplémentaire s’effectue principalement avec l’outil mssql-conf.
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
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
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
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;
Redémarrez le service
mssql-launchpadd
.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.
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
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.
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 |