Installare l'estensione del linguaggio Java di SQL Server in Windows

Si applica a: SQL Server 2019 (15.x) e versioni successive

Informazioni su come installare il componente dell'estensione del linguaggio Java per SQL Server in Windows. L'estensione per il linguaggio Java è inclusa nelle estensioni del linguaggio di SQL Server.

Nota

Questo articolo riguarda l'installazione dell'estensione del linguaggio Java per SQL Server in Windows. Per Linux, vedere Installare l'estensione del linguaggio Java di SQL Server in Linux. Per l'estensione del linguaggio C# in Windows, vedere Installare l'estensione del linguaggio .NET di SQL Server su Windows.

Prerequisiti

Nota

Le funzionalità e le opzioni di installazione variano a seconda della versione di SQL Server. Usa l'elenco a discesa del selettore di versione per scegliere la versione appropriata di SQL Server.

  • Per installare il supporto per l'estensione del linguaggio Java, è necessario il programma di installazione di SQL Server.

  • È possibile scaricare e installare qualsiasi runtime Java in base alle esigenze, inclusa la versione più recente di Microsoft Build of OpenJDK o il runtime Java con licenza ufficiale. In SQL Server 2022 (16.x) e versioni successive il runtime Java non è installato dal programma di installazione di SQL Server.

  • È necessaria un'istanza del motore di database. Le funzionalità dell'estensione del linguaggio Java non possono essere installate da sole, ma possono essere aggiunte in modo incrementale a un'istanza esistente.

  • Per assicurare la continuità aziendale, per le estensioni del linguaggio è disponibile il supporto di Gruppi di disponibilità Always On. È necessario installare le estensioni del linguaggio e configurare i pacchetti in ogni nodo. L'installazione dell'estensione del linguaggio Java è supportata in un cluster di failover in SQL Server 2019.

  • Non installare le estensioni del linguaggio di SQL Server o l'estensione del linguaggio Java in un controller di dominio. La parte del programma di installazione relativa alle estensioni del linguaggio avrà esito negativo.

  • Le estensioni del linguaggio e Machine Learning Services vengono installati per impostazione predefinita nei cluster Big Data di SQL Server. Se si usano cluster Big Data, non è necessario seguire la procedura descritta in questo articolo. Per ulteriori informazioni, eseguire script Python e R con i servizi di Machine Learning in un cluster Big Data SQL Server 2019

Importante

Al termine dell'installazione, assicurarsi di completare i passaggi di post-configurazione descritti in questo articolo, tra cui l'abilitazione di SQL Server per l'uso di codice esterno e l'aggiunta degli account necessari per SQL Server per eseguire il codice Java per conto dell'utente. Per completare le modifiche alla configurazione è in genere necessario riavviare l'istanza o riavviare il servizio Launchpad.

JRE o JDK Java

Nota

Le funzionalità e le opzioni di installazione variano a seconda della versione di SQL Server. Usa l'elenco a discesa del selettore di versione per scegliere la versione appropriata di SQL Server.

Con SQL Server 2022 (16.x), è possibile scaricare e installare qualsiasi runtime Java, inclusa la versione più recente di Microsoft Build of OpenJDK o il runtime Java con licenza ufficiale.

La versione attualmente supportata in Windows è Java 11. Java Runtime Environment (JRE) è il requisito minimo, ma Java Development Kit (JDK) è utile se sono necessari il compilatore Java e i pacchetti di sviluppo. Poiché JDK è tutto compreso, se lo si installa non è richiesto JRE. In Windows, se possibile, è consigliabile installare JDK nella cartella /Program Files/ predefinita. In caso contrario, è necessaria una configurazione aggiuntiva per concedere autorizzazioni ai file eseguibili. Per altre informazioni, vedere la sezione Concedere autorizzazioni (Windows) in questo documento.

Sono disponibili due metodi per installare e usare Java con SQL Server 2019 (15.x) e versioni successive:

  1. Usa il runtime Java predefinito, incluso nell'installazione di SQL Server.

    La tabella seguente elenca le versioni predefinite di Java incluse nell'installazione:

    Versione di SQL Server Versione predefinita di Java
    SQL Server 2019 (15.x) CU 23 e versioni successive Microsoft Build di OpenJDK 11.0.19
    SQL Server 2019 (15.x) RTM - CU22 Azul Zulu JRE 11.0.3
  2. Usare la distribuzione Java preferita invece del runtime Java predefinito.

    La versione attualmente supportata in Windows è Java 11. Java Runtime Environment (JRE) è il requisito minimo, ma Java Development Kit (JDK) è utile se sono necessari il compilatore Java e i pacchetti di sviluppo. Poiché JDK è tutto compreso, se lo si installa non è richiesto JRE. In Windows, se possibile, è consigliabile installare JDK nella cartella /Program Files/ predefinita. In caso contrario, è necessaria una configurazione aggiuntiva per concedere autorizzazioni ai file eseguibili. Per altre informazioni, vedere la sezione Concedere autorizzazioni (Windows) in questo documento.

Nota

Poiché Java è compatibile con le versioni precedenti, eventuali versioni precedenti potrebbero funzionare. Tuttavia, la versione supportata e testata per SQL Server 2019 (15.x) è Java 11.

Ottenere il supporto di installazione

Il percorso per il download di SQL Server dipende dall'edizione:

  • SQL Server edizioni Enterprise, Standard e Express. Queste edizioni sono concesse in licenza per l'uso in produzione. Per Enterprise Edition e Standard Edition, contattare il fornitore software di fiducia per richiedere il supporto di installazione. È possibile trovare informazioni sull'acquisto e una directory per i partner Microsoft nel sito Web Microsoft per gli acquisti.
  • L'edizione gratuita più recente.

Esecuzione del programma di installazione

Per le installazioni locali, è necessario eseguire il programma di installazione di come amministratore. Se si installa SQL Server da una condivisione remota, è necessario utilizzare un account di dominio che disponga di autorizzazioni di lettura ed esecuzione per tale condivisione.

  1. Avviare l'Installazione guidata di SQL Server.

  2. Nella scheda Installazione selezionare Nuova installazione autonoma di SQL Server o aggiunta di funzionalità a un'installazione esistente.

  1. Nella pagina Selezione funzionalità selezionare queste opzioni:

    Servizi motore di database: per usare le estensioni del linguaggio con SQL Server, è necessario installare un'istanza del motore di database. È possibile usare un'istanza predefinita oppure un'istanza denominata.

    Machine Learning Services ed estensioni del linguaggio: questa opzione determina l'installazione del componente delle estensioni del linguaggio da cui è supportata l'esecuzione del codice Java.

    Screenshot delle opzioni delle funzionalità per le estensioni del linguaggio.

    1. Se si sceglie Java nel passaggio precedente per installare il runtime Java predefinito, verrà visualizzata la pagina Percorso di installazione di Java.

      Installa il codice Java predefinito incluso in questa installazione. L'opzione Specificare il percorso di una versione diversa installata in questo computer non viene usata per le estensioni del linguaggio.

      Screenshot del percorso di installazione di Java.

  1. Nella pagina Selezione funzionalità selezionare queste opzioni:

    Servizi motore di database: per usare le estensioni del linguaggio con SQL Server, è necessario installare un'istanza del motore di database. È possibile usare un'istanza predefinita oppure un'istanza denominata.

    Machine Learning Services ed estensioni del linguaggio: questa opzione determina l'installazione del componente delle estensioni del linguaggio da cui è supportata l'esecuzione del codice Java.

    Screenshot delle funzionalità dell'istanza.

  1. Nella pagina Inizio installazione verificare che le opzioni selezionate siano incluse e selezionare Installa.

    • Servizi motore di database
    • Machine Learning Services ed estensioni del linguaggio

    Si noti la posizione della cartella nel percorso ..\Setup Bootstrap\Log in cui sono archiviati i file di configurazione. Al termine dell'installazione, è possibile esaminare i componenti installati nel file Summary.

  2. Dopo che l'installazione è completata, riavviare il computer, se richiesto. È importante leggere il messaggio visualizzato nel Monitoraggio guidato dell'installazione al termine dell'installazione. Per altre informazioni, vedere Visualizzare e leggere i file di log del programma di installazione di SQL Server.

Aggiungere la variabile JRE_HOME

JRE_HOME è una variabile di ambiente di sistema che specifica il percorso dell'interprete Java. In questo passaggio creare una variabile di ambiente di sistema in Windows.

  1. Trovare e copiare il percorso della home directory di JRE.

    Ad esempio, il percorso della home directory di JRE per il runtime Java predefinito Zulu JRE 11.0.3 è %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\.

    A seconda del percorso di installazione di SQL Server o se si sceglie un altro runtime Java, il percorso di JDK o JRE potrebbe essere diverso da quello dell'esempio precedente. Anche se JDK è installato, spesso si ottiene una sottocartella JRE come parte di tale installazione. In tal caso, puntare alla cartella JRE. L'estensione Java tenterà di caricare jvm.dll dal percorso %JRE_HOME%\bin\server.

  1. Trovare e copiare il percorso della home directory di JRE.

    Il percorso varierà a seconda del runtime e delle opzioni di installazione.

    L'estensione Java tenterà di caricare jvm.dll dal percorso %JRE_HOME%\bin\server.

  1. Nel Pannello di controllo aprire Sistema e sicurezza, aprire Sistema e selezionare Proprietà del sistema avanzate.

  2. Selezionare Variabili di ambiente.

  3. Creare una nuova variabile di sistema per JRE_HOME con il valore del percorso di JDK/JRE (disponibile nel passaggio 1).

  1. Riavviare Launchpad.

    1. Aprire Gestione configurazione SQL Server.

    2. In Servizi di SQL Server fare clic con il pulsante destro del mouse su Launchpad di SQL Server e selezionare Riavvia.

  1. Registrare l'estensione del linguaggio. Seguire questa procedura per scaricare e registrare l'estensione del linguaggio Java, che viene usata per il runtime personalizzato di Java.

    1. Scaricare il file java-lang-extension-windows-release.zip dall'estensione del linguaggio Java per il repository GitHub di SQL Server. Scaricare la versione più recente del file java-lang-extension-windows.zip per Windows. Se non è stata installata la versione di Java predefinita dal programma di installazione di SQL Server, assicurarsi che la versione di JRE corrisponda a quella scaricata da GitHub. Se preferisci usare la tua versione JRE installata, potrebbe essere necessario eseguire la compilazione di java-lang-extension dal codice sorgente di GitHub.

    2. Usare Azure Data Studio per connettersi all'istanza di SQL Server ed eseguire il comando T-SQL riportato di seguito per registrare l'estensione del linguaggio Java tramite l'istruzione CREATE EXTERNAL LANGUAGE.

    3. Modificare il percorso riportato in questa istruzione in modo che corrisponda al percorso del file ZIP dell'estensione del linguaggio scaricato (java-lang-extension-windows-release.zip) e al percorso dell'installazione personalizzata di Java (%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. Riavviare Launchpad.

    1. Aprire Gestione configurazione SQL Server.

    2. In Servizi di SQL Server fare clic con il pulsante destro del mouse su Launchpad di SQL Server e selezionare Riavvia.

Concedere l'accesso alla cartella JRE non predefinita

Se non è stata installata la versione di Java predefinita inclusa in SQL Server e non è stato installato Java in /Program Files, è necessario eseguire la procedura seguente.

Se non è stato installato Java nei file di programma, è necessario eseguire le seguenti operazioni.

Eseguire i comandi icacls da una riga con privilegi elevati per concedere l'accesso agli account SQLRUsergroup e del servizio SQL Server (in ALL_APPLICATION_PACKAGES) per l'accesso a JRE. I comandi concederanno l'accesso in modo ricorsivo a tutti i file e le cartelle nel percorso di directory specificato.

  1. Concedere le autorizzazioni SQLRUserGroup

    Per un'istanza denominata, aggiungere il nome dell'istanza a SQLRUsergroup (ad esempio, SQLRUsergroupINSTANCENAME).

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

    È possibile ignorare questo passaggio se JDK/JRE è stato installato nella cartella predefinita nei file di programma in Windows.

  2. Assegnare le autorizzazioni per AppContainer. Il comando precedente concede le autorizzazioni al SID del computer S-1-15-2-1, che, in una versione di Windows in inglese, equivale a ALL APPLICATION PACKAGES. In alternativa è possibile usare icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T in una versione di Windows in inglese.

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

Riavvia il servizio

Al termine dell'installazione, riavviare il motore di database prima di continuare con il passaggio successivo, abilitando l'esecuzione degli script.

Il riavvio del servizio ha l'effetto di riavviare automaticamente anche il servizio Launchpad di SQL Server correlato.

Per riavviare il servizio è possibile eseguire il comando Riavvia del menu di scelta rapida per l'istanza in SSMS oppure usare il pannello Servizi del Pannello di controllo o Gestione configurazione SQL Server.

Abilitare l'esecuzione di script

  1. Aprire SQL Server Management Studio. Connettersi all'istanza di in cui sono state installate le estensioni del linguaggio, fare clic su Nuova query per aprire una finestra di query ed eseguire questo comando:

    EXEC sp_configure;
    

    La funzionalità è disattivata (value = 0) per impostazione predefinita e deve essere abilitata esplicitamente da un amministratore affinché sia possibile eseguire il codice Java.

  2. Per abilitare la funzionalità per script esterni, eseguire l'istruzione seguente:

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

    Se questa funzionalità è già stata abilitata per i servizi di Machine Learning, non ripetere la configurazione per le estensioni del linguaggio. La piattaforma di estendibilità sottostante supporta entrambi.

Registrare il linguaggio esterno

Per ogni database in cui si vogliono usare le estensioni del linguaggio, è necessario registrare il linguaggio esterno con CREATE EXTERNAL LANGUAGE.

L'esempio seguente aggiunge un linguaggio esterno denominato Java a un database in SQL Server in Windows.

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

Per altre informazioni, vedere CREATE EXTERNAL LANGUAGE.

Verifica l'installazione

Verificare lo stato di installazione dell'istanza nei log di installazione.

Usare la procedura seguente per verificare che tutti i componenti usati per avviare lo script esterno siano in esecuzione.

  1. In SQL Server Management Studio o Azure Data Studio aprire una nuova finestra di query ed eseguire il comando seguente:

    EXEC sp_configure 'external scripts enabled';
    

    Il run_value è ora impostato su 1.

  2. Aprire il pannello Servizi o Gestione configurazione SQL Server e verificare che il servizio Launchpad di SQL Server sia in esecuzione. Dovrebbe essere in esecuzione un servizio per ogni istanza del motore di database in cui sono installate le estensioni del linguaggio. Per ulteriori informazioni sul servizio, vedere Architettura di estendibilità nelle estensioni del linguaggio di SQL Server.

Configurazione aggiuntiva

Se la procedura di verifica ha avuto esito positivo, è possibile eseguire il codice Java da SQL Server Management Studio, Azure Data Studio, Visual Studio Code o qualsiasi altro client in grado di inviare istruzioni T-SQL al server.

Se durante l'esecuzione del comando è stato restituito un errore, rivedere i passaggi di configurazione aggiuntivi in questa sezione. Potrebbe essere necessario eseguire specifiche configurazioni aggiuntive per il servizio o il database.

A livello di istanza, la configurazione aggiuntiva può includere:

Nel database potrebbero essere necessari gli aggiornamenti di configurazione seguenti:

Nota

La necessità di una configurazione aggiuntiva dipende dallo schema di sicurezza, dal percorso in cui è stato installato SQL Server e dalla modalità presumibilmente adottata dagli utenti per connettersi al database ed eseguire script esterni.

Ottimizzazioni suggerite

Ora che tutto il sistema funziona, può essere necessario ottimizzare il server per supportare l'estensione del linguaggio Java.

Ottimizzare il server per l'estensione del linguaggio Java

Le impostazioni predefinite per il programma di installazione di SQL Server consentono di ottimizzare il bilanciamento del server per un'ampia gamma di servizi supportati dal motore di database, che possono includere processi di estrazione, trasformazione e caricamento (ETL), creazione di report, controllo e applicazioni che usano dati di SQL Server. Di conseguenza, con le impostazioni predefinite, talvolta alle risorse per le estensioni del linguaggio vengono applicate restrizioni o limitazioni, in particolare nel caso di operazioni che richiedono molta memoria.

Per assicurarsi che i processi delle estensioni del linguaggio siano considerati prioritari e dispongano delle risorse appropriate, è consigliabile usare la funzionalità Resource Governor di SQL Server per configurare un pool di risorse esterne. Può inoltre essere opportuno modificare la quantità di memoria allocata al motore di database o aumentare il numero di account eseguiti con il servizio Launchpad di SQL Server.

Se si usa l'edizione Standard e non è disponibile Resource Governor, per gestire le risorse del server è possibile usare le viste a gestione dinamica (DMV) e gli eventi estesi, oltre che il monitoraggio degli eventi di Windows.

Passaggio successivo

Gli sviluppatori Java possono iniziare alcuni semplici esempi e con le nozioni di base sul funzionamento di Java con SQL Server. Per il passaggio successivo, vedere il collegamento seguente: