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

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

Découvrez comment installer le composant Extension de langage Java pour SQL Server sur Windows. L’extension de langage Java fait partie des Extensions de langage SQL Server.

Notes

Cet article concerne l’installation de l’extension de langage Java pour SQL Server sur Windows. Pour Linux, consultez Installation de l’extension de langage Java SQL Server sur Linux.

Prérequis

Remarque

Les fonctionnalités des caractéristiques et les options d’installation varient entre les versions de SQL Server. Utilisez la liste déroulante du sélecteur de version pour choisir la version appropriée de SQL Server.

  • Le programme d’installation de SQL Server est nécessaire si vous souhaitez installer la prise en charge de l’extension de langage Java.

  • 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. Dans SQL Server 2022 (16.x) et versions ultérieures, le runtime Java n'est pas installé par le programme d'installation de SQL Server.

  • Une instance du moteur de base de données est nécessaire. Il n'est pas possible d'installer uniquement les fonctionnalités Extension de langage Java. Cependant, vous pouvez les ajouter de façon incrémentielle à une instance existante.

  • Pour assurer la continuité d'activité, les extensions de langage prennent en charge les groupes de disponibilité Always On. Vous devez installer les extensions de langage et configurer des packages sur chaque nœud. L’installation de l’extension de langage Java est également prise en charge sur une instance de cluster de basculement dans SQL Server.

  • N'installez pas les extensions de langage SQL Server ni l'extension de langage Java sur un contrôleur de domaine. La partie Extensions de langage de l'installation échoue.

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

Important

Une fois l’installation terminée, veillez à suivre les étapes consécutives à la configuration décrites dans cet article. Vous devez notamment autoriser SQL Server à utiliser du code externe et ajouter les comptes nécessaires pour que SQL Server exécute du code Java en votre nom. Les modifications de configuration nécessitent généralement un redémarrage de l’instance ou du service Launchpad.

Java JRE ou JDK

Notes

Les fonctionnalités des caractéristiques et les options d’installation varient entre les versions de SQL Server. Utilisez la liste déroulante du sélecteur de version pour choisir la version appropriée de SQL Server.

Avec SQL Server 2022 (16.x), vous pouvez télécharger et installer n’importe quel runtime Java, notamment la dernière build Microsoft d’OpenJDK ou le runtime Java officiellement sous licence.

Java 11 est actuellement la version prise en charge sur Windows. Le JRE (Java Runtime Environment) est le minimum nécessaire, mais le JDK (Java Development Kit) est utile si vous avez besoin du compilateur Java et de packages de développement. Le JDK étant « tout compris », son installation rend le JRE inutile. Sur Windows, nous vous recommandons d’installer le JDK dans le dossier par défaut /Program Files/ si possible. Sinon, une configuration supplémentaire est nécessaire pour accorder des autorisations aux exécutables. Pour plus d’informations, consultez la section sur l’octroi d’autorisations (Windows) dans ce document.

Il existe deux façons d'installer et d'utiliser Java avec SQL Server 2019 (15.x) et versions ultérieures :

  1. Utilisez le runtime Java par défaut, qui est inclus dans l’installation de SQL Server.

    Le tableau suivant répertorie les versions par défaut de Java incluses dans l’installation :

    Version de SQL Server Version de Java par défaut
    SQL Server 2019 (15.x) CU 23 et versions ultérieures Microsoft Build d’OpenJDK 11.0.19
    SQL Server 2019 (15.x) RTM CU22 Azul Zulu JRE 11.0.3
  2. Utilisez votre distribution Java par défaut au lieu du runtime Java par défaut.

    Java 11 est actuellement la version prise en charge sur Windows. Le JRE (Java Runtime Environment) est le minimum nécessaire, mais le JDK (Java Development Kit) est utile si vous avez besoin du compilateur Java et de packages de développement. Le JDK étant « tout compris », son installation rend le JRE inutile. Sur Windows, nous vous recommandons d’installer le JDK dans le dossier par défaut /Program Files/ si possible. Sinon, une configuration supplémentaire est nécessaire pour accorder des autorisations aux exécutables. Pour plus d’informations, consultez la section sur l’octroi d’autorisations (Windows) dans ce document.

Remarque

Étant donné que Java est à compatibilité descendante, il est possible que les versions antérieures fonctionnent. Cependant, la version prise en charge et testée pour SQL Server 2019 (15.x) est Java 11.

Obtenir le média d’installation

L’emplacement de téléchargement pour SQL Server dépend de l’édition :

  • Éditions SQL Server Entreprise, Standard et Express. Ces éditions sont concédées sous licence pour une utilisation en production. Pour les éditions Entreprise et Standard, contactez votre fournisseur de logiciels afin d’obtenir le support d’installation. Vous trouverez des informations sur l’achat et un annuaire de partenaires de Microsoft sur le site web d’achat de Microsoft.
  • L’édition gratuite la plus récente.

Exécuter le programme d’installation

Pour des installations locales, vous devez exécuter le programme d'installation en tant qu'administrateur. Si vous installez SQL Server à partir d'un partage distant, vous devez utiliser un compte de domaine qui a les autorisations de lecture et d'exécution sur le partage distant.

  1. Démarrez l’Assistant Installation de SQL Server.

  2. Sous l’onglet Installation, sélectionnez Nouvelle installation autonome de SQL Server ou ajout de fonctionnalités à une installation existante.

  1. Dans la page Sélection de fonctionnalités , sélectionnez les options suivantes :

    Services de moteur de base de données : pour utiliser les extensions de langage avec SQL Server, vous devez installer une instance du moteur de base de données. Vous pouvez utiliser l’instance par défaut ou une instance nommée.

    Machine Learning Services et extensions de langage : cette option installe le composant Extensions de langage qui prend en charge l’exécution du code Java.

    • Si vous souhaitez installer le runtime Java par défaut, sélectionnez Machine Learning Services et extensions de langage et Java.

    • Si vous souhaitez utiliser votre propre runtime Java, sélectionnez Machine Learning Services et extensions de langage. Ne sélectionnez pas Java.

    • Si vous souhaitez utiliser R et Python, consultez Installer SQL Server Machine Learning Services (Python et R) sur Windows.

    Screenshot of the Feature options for Language Extensions.

    1. Si vous avez choisi Java à l’étape précédente pour installer le runtime Java par défaut, la page Emplacement d’installation de Java s’affiche.

      Installez le java par défaut inclus dans cette installation. L'option Indiquer l'emplacement d'une autre version installée sur cet ordinateur n'est pas utilisée pour les extensions de langage.

      Screenshot of the Java install location.

  1. Dans la page Sélection de fonctionnalités , sélectionnez les options suivantes :

    Services de moteur de base de données : pour utiliser les extensions de langage avec SQL Server, vous devez installer une instance du moteur de base de données. Vous pouvez utiliser l’instance par défaut ou une instance nommée.

    Machine Learning Services et extensions de langage : cette option installe le composant Extensions de langage qui prend en charge l’exécution du code Java.

    Screenshot of instance features.

  1. Dans la page Prêt pour l’installation, vérifiez que ces sélections sont incluses, puis choisissez Installer.

    • Services Moteur de base de données
    • Machine Learning Services et extensions de langage

    Notez l’emplacement du dossier sous le chemin ..\Setup Bootstrap\Log où sont stockés les fichiers de configuration. Une fois l’installation terminée, vous pouvez passer en revue les composants installés dans le fichier de synthèse.

  2. Si vous êtes invité à redémarrer l’ordinateur après l’installation, faites-le dès à présent. Lisez bien le message de l'assistant Installation à la fin de l'installation. Pour plus d'informations, consultez View and Read SQL Server Setup Log Files.

Ajouter la variable JRE_HOME

JRE_HOME est une variable d’environnement système qui spécifie l’emplacement de l’interpréteur Java. Dans cette étape, vous allez créer une variable d’environnement système sur Windows.

  1. Recherchez et copiez le chemin au dossier de base de JRE.

    Par exemple, le chemin au dossier de base de JRE pour le runtime Java par défaut Zulu JRE 11.0.3 est %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\.

    Selon le chemin d’installation de SQL Server ou la sélection d’un autre runtime Java, l’emplacement du JDK ou du JRE peut être différent de celui de l’exemple ci-dessus. Même si vous avez installé un JDK, vous obtenez souvent un sous-dossier JRE dans le cadre de cette installation. Dans ce cas, pointez vers le dossier JRE. L'extension Java tente de charger le fichier jvm.dll à partir du chemin d'accès %JRE_HOME%\bin\server.

  1. Recherchez et copiez le chemin au dossier de base de JRE.

    Ce chemin d'accès dépend du runtime et des options d'installation.

    L'extension Java tente de charger le fichier jvm.dll à partir du chemin d'accès %JRE_HOME%\bin\server.

  1. Dans le Panneau de configuration, ouvrez Système et sécurité, ouvrez Système, puis sélectionnez Propriétés système avancées.

  2. Sélectionnez Variables d’environnement.

  3. Créez une variable système pour JRE_HOME avec la valeur du chemin JDK/JRE (disponible à l’étape 1).

  1. Redémarrez Launchpad.

    1. Ouvrez le Gestionnaire de configuration SQL Server.

    2. Sous Services SQL Server, cliquez avec le bouton droit sur SSQL Server Launchpad et sélectionnez Redémarrer.

  1. Inscrivez l’extension de langage. Effectuez ces étapes pour télécharger et inscrire l’extension de langage Java, qui est utilisée pour le runtime Java personnalisé.

    1. Téléchargez le java-lang-extension-windows-release.zip fichier à partir de l'extension de langage Java pour le référentiel GitHub SQL Server. Téléchargez le fichier java-lang-extension-windows.zip Windows le plus récent. Si vous n'avez pas installé java par défaut à partir du programme d'installation de SQL Server, vérifiez que la version JRE correspond à celle téléchargée à partir de GitHub. Si vous préférez utiliser votre propre version JRE installée, vous devrez peut-être compiler java-lang-extension à partir du code source GitHub.

    2. Utilisez Azure Data Studio pour vous connecter à votre instance SQL Server et exécutez la commande T-SQL suivante pour inscrire l’extension de langage Java avec CREATE EXTERNAL LANGUAGE.

    3. Modifiez le chemin dans cette instruction pour refléter l’emplacement du fichier zip de l’extension de langage téléchargé (java-lang-extension-windows-release.zip) et l’emplacement de votre installation de Java personnalisée (%ProgramFiles%\Python).

    CREATE EXTERNAL LANGUAGE [Java]
    FROM (CONTENT = N'C:\path\to\java-lang-extension-windows-release.zip',
        FILE_NAME = 'javaextension.dll',
        ENVIRONMENT_VARIABLES = N'{"JAVAHOME": "C:\\Program Files\\Java"}');
    GO
    
  2. Redémarrez Launchpad.

    1. Ouvrez le Gestionnaire de configuration SQL Server.

    2. Sous Services SQL Server, cliquez avec le bouton droit sur SSQL Server Launchpad et sélectionnez Redémarrer.

Accorder l’accès à un dossier JRE autre que celui par défaut

Si vous n'avez pas installé Java par défaut qui était inclus dans le serveur SQL et que vous n'avez pas installé Java sous /Program Files, vous devez effectuer les étapes suivantes.

Si vous n'avez pas installé Java sous les fichiers programme, vous devez procéder comme suit.

Exécutez les commandes icacls à partir d'une ligne avec des privilèges élevés pour accorder l'accès aux comptes de service SQLRUsergroup et SQL Server (dans ALL_APPLICATION_PACKAGES) afin d'accéder au JRE. De manière récursive, les commandes permettent d'accéder à tous les fichiers et dossiers sous le chemin d'accès d'un annuaire donné.

  1. Accorder des autorisations SQLRUserGroup

    Pour une instance nommée, ajoutez le nom de l'instance à SQLRUsergroup (par exemple, SQLRUsergroupINSTANCENAME).

    icacls "<PATH to JRE>" /grant "SQLRUsergroup":(OI)(CI)RX /T
    

    Vous pouvez ignorer cette étape si vous avez installé le JDK/JRE dans le dossier par défaut sous Program Files sur Windows.

  2. Accordez des autorisations AppContainer. Cette commande accorde des autorisations au SID de l'ordinateur S-1-15-2-1, ce qui équivaut à ALL APPLICATION PACKAGES sur une version en anglais de Windows. Vous pouvez également utiliser icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T sur une version en anglais de Windows.

    icacls "<PATH to JRE>" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

Redémarrez le service.

Une fois l'installation terminée, redémarrez le moteur de base de données avant de passer à l'étape suivante pour activer l'exécution de scripts.

Le redémarrage du service entraîne également le redémarrage automatique du service SQL Server Launchpad associé.

Pour redémarrer le service, vous pouvez cliquer avec le bouton droit sur la commande Redémarrer pour l'instance dans SSMS, dans le panneau Services du panneau de contrôle ou utiliser le Gestionnaire de configuration SQL Server.

Activer l’exécution de scripts

  1. Ouvrez SQL Server Management Studio. Connectez-vous à l’instance sur laquelle vous avez installé les extensions de langage, sélectionnez Nouvelle requête pour ouvrir une fenêtre de requête, puis exécutez la commande suivante :

    EXEC sp_configure;
    

    La fonctionnalité est désactivée par défaut (value = 0) et doit être explicitement activée par un administrateur avant que vous puissiez exécuter du code Java.

  2. Pour activer la fonctionnalité d’exécution de scripts externes, exécutez l’instruction suivante :

    EXEC sp_configure 'external scripts enabled', 1
    GO
    RECONFIGURE WITH OVERRIDE
    

    Si vous avez déjà activé la fonctionnalité pour Machine Learning Services, ne procédez pas à une deuxième configuration les extensions de langage. La plateforme d’extensibilité sous-jacente prend en charge les deux.

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

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO

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

Vérifier l'installation

Vérifiez l’état d’installation de l’instance dans les journaux d’installation.

Effectuez les étapes suivantes pour vérifier que tous les composants utilisés pour lancer un script externe sont en cours d’exécution.

  1. Dans SQL Server Management Studio ou Azure Data Studio, ouvrez une nouvelle fenêtre de requête et exécutez l’instruction suivante :

    EXEC sp_configure 'external scripts enabled';
    

    La valeur run_value est désormais de 1.

  2. Ouvrez le panneau Services ou le Gestionnaire de configuration SQL Server, puis vérifiez que le service SQL Server Launchpad est en cours d’exécution. Vous devez disposer d'un service pour chaque instance du moteur de base de données sur laquelle les extensions de langage sont installées. Pour plus d'informations sur le service, consultez Architecture d'extensibilité dans SQL Server Machine Learning Services.

Configuration supplémentaire

Si l’étape de vérification réussit, vous pouvez exécuter du code Java à partir de SQL Server Management Studio, d’Azure Data Studio, de Visual Studio Code ou de tout autre client capable d’envoyer des instructions T-SQL au serveur.

Si une erreur s’est produite lors de l’exécution de la commande, passez en revue les étapes de configuration supplémentaires de cette section. Vous devrez peut-être apporter des configurations supplémentaires spécifiques au service ou à la base de données.

Au niveau de l'instance, ces configurations supplémentaires peuvent inclure :

Vous aurez peut-être besoin d’effectuer les mises à jour de configuration suivantes sur la base de données :

Notes

Plusieurs éléments déterminent si une configuration supplémentaire est nécessaire : votre schéma de sécurité, l’emplacement d’installation de SQL Server et la façon dont les utilisateurs sont supposés se connecter à la base de données et exécuter des scripts externes.

Optimisations suggérées

Maintenant que tout fonctionne, il peut être intéressant d’optimiser le serveur pour prendre en charge l’extension de langage Java.

Optimisation du serveur pour l’extension de langage Java

Les paramètres par défaut pour la configuration de SQL Server sont destinés à optimiser l'équilibre du serveur pour un éventail de services pris en charge par le moteur de base de données, ce qui peut inclure les processus d'extraction, transformation et chargement (ETL, extract, transform, load), la création de rapports, l'audit et les applications qui utilisent les données SQL Server. Cela explique pourquoi, dans les paramètres par défaut, les ressources sont parfois restreintes ou limitées pour les extensions de langage, en particulier dans les opérations utilisant beaucoup de mémoire.

Pour vous assurer que les travaux d’extensions de langage sont classés par ordre de priorité et correctement ressourcées, nous vous recommandons d’utiliser la fonctionnalité Resource Governor de SQL Server pour configurer un pool de ressources externes. Vous pouvez aussi modifier la quantité de mémoire allouée au moteur de base de données ou augmenter le nombre de comptes s'exécutant sous le service SQL Server Launchpad.

Si vous utilisez l'édition Standard et que vous n'avez pas le composant Resource Governor, vous pouvez utiliser les vues de gestion dynamique (DMV), les événements étendus ainsi que la supervision des événements Windows pour mieux gérer les ressources serveur.

Étape suivante

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 accéder à l’étape suivante, cliquez sur le lien suivant :