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
La versione di Linux deve essere supportata da SQL Server, ma non include il motore Docker. Le versioni supportate includono:
È necessario avere uno strumento per eseguire i comandi Transact-SQL (T-SQL). Un editor di query è necessario per la configurazione e la convalida successiva all'installazione. È consigliabile usare Azure Data Studio, scaricabile gratuitamente, che viene eseguito in Linux.
- 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.
Le estensioni del linguaggio sono supportate anche nei contenitori Linux. Non vengono forniti contenitori predefiniti con le estensioni del linguaggio, ma è possibile crearne uno dai contenitori di SQL Server usando un modello di esempio disponibile in GitHub.
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
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)
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 LIBRARYSe 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 filejar
. Si consiglia di inserire sempre i file di classe in un filejar
quando si lavora con SQL Server. Per informazioni sulla creazione di un oggettojar
, vedere Creare un file jar Java da file di classe.chmod ug+rx <MyJarFile.jar>
È anche necessario assegnare alle
mssql_satellite
autorizzazionijar
il file JAR da leggere/eseguire.chown mssql_satellite:mssql_satellite <MyJarFile.jar>
La configurazione aggiuntiva viene eseguita principalmente tramite lo strumento mssql-conf.
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
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
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
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;
Riavviare nuovamente il servizio
mssql-launchpadd
.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.
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
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.
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 |