Installare l'estensione del linguaggio Java di SQL Server su Linux

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

Informazioni su come installare il componente dell'estensione del linguaggio Java per SQL Server in Linux. L'estensione del linguaggio Java fa parte delle estensioni del linguaggio di SQL Server ed è un componente aggiuntivo per il motore di database.

Anche se è possibile installare il motore di database e le estensioni del linguaggio simultaneamente, è consigliabile installare e configurare prima il motore di database di SQL Server per poter risolvere eventuali problemi prima di aggiungere altri componenti.

Prerequisiti

  • Il percorso del pacchetto per le estensioni Java si trova nei repository di origine di Linux per SQL Server. Se i repository di origine per l'installazione del motore di database sono già stati configurati, è possibile eseguire i comandi di installazione del pacchetto mssql-server-extensibility-java usando la stessa registrazione dei repository.

Elenco di pacchetti

In un dispositivo connesso a Internet i pacchetti vengono scaricati e installati in modo indipendente dal motore di database usando il programma di installazione del pacchetto per ogni sistema operativo. Nella tabella seguente vengono descritti tutti i pacchetti disponibili.

Nome pacchetto Applicabile a Descrizione
mssql-server-extensibility Tutte le lingue Framework di estendibilità usato per l'estensione del linguaggio Java
mssql-server-extensibility-java Java Si applica a: solo SQL Server 2019 (15.x) su Linux

Framework di estendibilità usato per l'estensione del linguaggio Java che include un runtime Java supportato

Installare l'estensione del linguaggio Java

Per installare le estensioni del linguaggio e Java in Linux, installare mssql-server-extensibility-java. Quando si installa mssql-server-extensibility-java, il pacchetto installa automaticamente JRE 11 se non è già installato. Viene anche aggiunto il percorso JVM a una variabile di ambiente denominata JRE_HOME.

Per abilitare l'estensione del linguaggio Java, compilare un file binario personalizzato seguendo le istruzioni riportate nella pagina delle estensioni del linguaggio Java in GitHub.

Nota

In un server connesso a Internet, durante l'installazione del pacchetto principale, vengono scaricate e installate le dipendenze del pacchetto. Se il server non è connesso a Internet, vedere altri dettagli sull'installazione offline.

È 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. A partire da SQL Server 2022 (16.x), il programma di installazione di SQL Server non installa alcun runtime Java.

Per abilitare l'estensione del linguaggio Java, compilare un file binario personalizzato seguendo le istruzioni riportate nella pagina delle estensioni del linguaggio Java in GitHub.

Comando di installazione di Red Hat

È possibile installare le estensioni del linguaggio per Java in Red Hat usando il comando seguente.

Suggerimento

Se possibile, eseguire yum clean all per aggiornare i pacchetti nel sistema prima dell'installazione.

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

Comando di installazione di Ubuntu

È possibile installare le estensioni del linguaggio per Java in Ubuntu usando il comando seguente.

Suggerimento

Se possibile, eseguire apt-get update per aggiornare i pacchetti nel sistema prima dell'installazione. Inoltre, alcune immagini Docker di Ubuntu potrebbero non avere l'opzione di trasporto apt HTTPS. Per installarla, usare apt-get install apt-transport-https.

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

Comando di installazione di SUSE

È possibile installare le estensioni del linguaggio per Java in SUSE usando il comando seguente.

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

Configurazione successiva all'installazione (obbligatoria)

  1. Concedere le autorizzazioni in Linux

    Non è necessario eseguire questo passaggio se si usano librerie esterne. Il modo consigliato per lavorare è usare le librerie esterne. Per la creazione di una libreria esterna dal file jar, vedere CREATE EXTERNAL LIBRARY

    Se non si usano librerie esterne, è necessario fornire a SQL Server le autorizzazioni per eseguire le classi Java nel file jar.

    Per concedere l'accesso in lettura e in esecuzione a un file jar, eseguire il comando chmod seguente sul file jar. Si consiglia di inserire sempre i file di classe in un file jar quando si lavora con SQL Server. Per informazioni sulla creazione di un oggetto jar, vedere Creare un file jar Java da file di classe.

    chmod ug+rx <MyJarFile.jar>
    

    È anche necessario assegnare alle mssql_satellite autorizzazioni jar il file JAR da leggere/eseguire.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    La configurazione aggiuntiva viene eseguita principalmente tramite lo strumento mssql-conf.

  2. Aggiungere l'account utente mssql usato per eseguire il servizio SQL Server. Questa operazione è necessaria se la configurazione non è stata eseguita in precedenza.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Abilitare l'accesso alla rete in uscita. L'accesso alla rete in uscita è disabilitato per impostazione predefinita. Per abilitare le richieste in uscita, impostare la proprietà booleana outboundnetworkaccess usando lo strumento mssql-conf. Per altre informazioni, vedere Configurare SQL Server in Linux con mssql conf.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Riavviare il servizio Launchpad di SQL Server e l'istanza del motore di database per leggere i valori aggiornati dal file INI. Un messaggio di riavvio avverte ogni volta che viene modificata un'impostazione relativa all'estendibilità.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Abilitare l'esecuzione di script esterni usando Azure Data Studio o un altro strumento come SQL Server Management Studio (solo Windows) che esegue T-SQL.

    EXEC sp_configure 'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  6. Riavviare nuovamente il servizio mssql-launchpadd.

  7. Per ogni database in cui si vogliono usare le estensioni del linguaggio, è necessario registrare il linguaggio esterno con CREATE EXTERNAL LANGUAGE. Vedere la procedura nella sezione successiva.

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 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"}');

Per l'estensione Java, viene usata la variabile di ambiente JRE_HOME per determinare il percorso da cui trovare e inizializzare JVM.

L'istruzione DDL CREATE EXTERNAL LANGUAGE include un parametro (ENVIRONMENT_VARIABLES) per impostare le variabili di ambiente in modo specifico per il processo che ospita l'estensione. Si tratta del metodo consigliato e più efficace per impostare le variabili di ambiente richieste dalle estensioni di linguaggio esterno.

Per altre informazioni, vedere CREATE EXTERNAL LANGUAGE.

Verifica l'installazione

L'integrazione delle funzionalità Java non include librerie, ma è possibile eseguire grep -r JRE_HOME /etc per verificare che sia stata creata la variabile di ambiente JAVA_HOME.

Per convalidare l'installazione, eseguire uno script T-SQL che esegue una stored procedure di sistema richiamando Java. Per questa attività è necessario uno strumento di query. Azure Data Studio è una scelta ottimale. Altri strumenti di uso comune, ad esempio SQL Server Management Studio, sono solo per Windows. Se si ha un computer Windows con questi strumenti, usarlo per connettersi all'installazione Linux del motore di database.

Installazione completa di SQL Server e dell'estensione del linguaggio Java

È possibile installare e configurare il motore di database e l'estensione del linguaggio Java in una sola procedura aggiungendo i pacchetti e i parametri Java in un comando che installa il motore di database.

  1. Specificare una riga di comando che includa il motore di database, oltre alle funzionalità delle estensioni del linguaggio.

    È possibile aggiungere l'estendibilità Java a un'installazione del motore di database.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Accettare i contratti di licenza e completare la configurazione successiva all'installazione. Per questa attività usare lo strumento mssql-conf.

    sudo /opt/mssql/bin/mssql-conf setup
    

    Viene richiesto di accettare il contratto di licenza per il motore di database, scegliere un'edizione e impostare la password dell'amministratore.

  3. Se richiesto, riavviare il servizio.

    sudo systemctl restart mssql-server.service
    

Installazione automatica

Usare l'installazione automatica per il motore di database e aggiungere i pacchetti per mssql-server-extensibility-java.

Installazione offline

Per la procedura di installazione dei pacchetti, seguire le istruzioni contenute in Installazione offline. Trovare il sito di download e quindi scaricare i pacchetti specifici usando l'elenco di pacchetti riportato più avanti.

Suggerimento

Molti degli strumenti di gestione dei pacchetti forniscono comandi che consentono di determinare le dipendenze dei pacchetti. Per yum, usare sudo yum deplist [package]. Per Ubuntu, usare sudo apt-get install --reinstall --download-only [package name] seguito da dpkg -I [package name].deb.

Sito di download

È possibile scaricare i pacchetti da https://packages.microsoft.com/. Tutti i pacchetti per Java si trovano nella stessa posizione del pacchetto del motore di database.

Percorsi di download

Pacchetto Distribuzione Percorso download
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/

Elenco di pacchetti

A seconda delle estensioni che si vogliono usare, scaricare i pacchetti necessari per una linguaggio specifico. I nomi dei file esatti includono le informazioni sulla piattaforma nel suffisso, ma i nomi dei file riportati di seguito dovrebbero essere sufficienti per determinare quali file ottenere.

  • Pacchetti core

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Limiti

L'autenticazione implicita attualmente non è disponibile in Linux. Ciò significa che non è possibile connettersi al server da Java in esecuzione per accedere ai dati o ad altre risorse.

Governance delle risorse

Esiste parità tra Linux e Windows per la governance delle risorse per i pool di risorse esterni, ma le statistiche per sys.dm_resource_governor_external_resource_pools hanno attualmente unità diverse in Linux.

Nota

Le statistiche nella tabella seguente vengono generate dai sottosistemi dei gruppi di controllo (cgroup) specificati.

Nome colonna Descrizione Valore in Linux
peak_memory_kb Quantità massima di memoria usata per il pool di risorse. In Linux questa statistica è originata dal sottosistema memory, dove il valore è memory.max_usage_in_bytes
write_io_count Il totale degli I/O di scrittura generati dalla reimpostazione delle statistiche di Resource Governor. In Linux questa statistica è originata dal sottosistema blkio, dove il valore nella riga di scrittura è blkio.throttle.io_serviced
read_io_count Il totale degli I/O di lettura generati dalla reimpostazione delle statistiche di Resource Governor. In Linux questa statistica è originata dal sottosistema blkio, dove il valore nella riga di lettura è blkio.throttle.io_serviced
total_cpu_kernel_ms Tempo del kernel dell'utente della CPU cumulativo, espresso in millisecondi, dalla reimpostazione delle statistiche di Resource Governor. In Linux questa statistica è originata dal sottosistema cpuacct, dove il valore nella riga dell’utente è cpuacct.stat
total_cpu_user_ms Tempo dell'utente della CPU cumulativo, espresso in millisecondi, dalla reimpostazione delle statistiche di Resource Governor. In Linux questa statistica è originata dal sottosistema cpuacct, dove il valore nella riga del sistema è cpuacct.stat
active_processes_count Numero di processi esterni in esecuzione al momento della richiesta. In Linux questa statistica è originata dal sottosistema pids, dove il valore è pids.current