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.

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 di motore di database. Non è possibile installare solo le funzionalità dell'estensione del linguaggio Java, anche se è possibile aggiungerle in modo incrementale a un'istanza esistente.

  • Per la continuità aziendale, i gruppi di disponibilità AlwaysOn sono supportati per le estensioni del linguaggio. È 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 SQL Server o l'estensione del linguaggio Java in un controller di dominio. La parte Estensioni del linguaggio dell'installazione ha esito negativo.

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

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 inclusivo, se si installa JDK, JRE non è necessario. 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.

Esistono due modi 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 inclusivo, se si installa JDK, JRE non è necessario. 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

Dato che Java è compatibile con le versioni precedenti, le versioni precedenti potrebbero funzionare, ma 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:

  • Edizioni SQL Server Enterprise, Standard ed 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:

    motore di database Services: 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 of the Feature options for Language Extensions.

    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 of the Java install location.

  1. Nella pagina Selezione funzionalità selezionare queste opzioni:

    motore di database Services: 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 of instance features.

  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 dall'Installazione guidata 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 è installato un JDK, spesso si ottiene una sottocartella JRE come parte di tale installazione, quindi in questo caso puntare alla cartella JRE. L'estensione Java tenta di caricare l'oggetto jvm.dll dal percorso %JRE_HOME%\bin\server.

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

    Questo percorso dipende dal runtime e dalle opzioni di installazione.

    L'estensione Java tenta di caricare l'oggetto 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 java-lang-extension-windows-release.zip file 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 è stato installato java predefinito dal programma di installazione di SQL Server, assicurarsi che la versione 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 è stato installato il codice Java predefinito incluso in SQL Server e non è stato installato Java in /Program Files, è necessario eseguire i passaggi seguenti.

Se Java non è stato installato nei file di programma, è necessario eseguire la procedura seguente.

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

  1. Concedere 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. Questo comando concede le autorizzazioni al SID S-1-15-2-1del computer , equivalente a ALL APPLICATION PACKAGES in una versione inglese di Windows. 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 di script.

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

È possibile riavviare il servizio usando il comando Riavvia con il pulsante destro del mouse per l'istanza in SSMS, con il pannello Servizi in Pannello di controllo o usando 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 in modo esplicito da un amministratore prima di poter 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 è già stata abilitata la funzionalità per Machine Learning Services, non eseguire di nuovo la riconfigurazione 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';
    

    L'oggetto 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. È necessario disporre di un servizio per ogni istanza di motore di database in cui sono installate le estensioni del linguaggio. Per altre 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 configurazioni aggiuntive appropriate 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 l'installazione di SQL Server sono concepite per ottimizzare il bilanciamento del server per un'ampia gamma di servizi supportati dalla motore di database, che possono includere processi di estrazione, trasformazione e caricamento (ETL), creazione di report, controllo e applicazioni che usano i 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. È anche possibile modificare la quantità di memoria allocata al motore di database oppure aumentare il numero di account eseguiti nel servizio Launchpad di SQL Server.

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

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: