Instalación de la extensión de lenguaje Java de SQL Server en Linux

Se aplica a: SQL Server 2019 (15.x) en Linux y versiones posteriores

Aprenda a instalar el componente de extensión de lenguaje Java para SQL Server en Linux. La extensión de lenguaje Java forma parte de las extensiones de lenguaje de SQL Server y un complemento para el motor de base de datos.

Aunque puede instalar el motor de base de datos y extensiones de lenguaje de forma simultánea, el procedimiento recomendado es instalar y configurar primero el motor de base de datos de SQL Server para poder resolver cualquier problema antes de agregar más componentes.

Prerequisites

  • El paquete de extensiones Java está en los repositorios de código fuente de SQL Server para Linux. Si ya has configurado repositorios de código fuente para la instalación de Motor de base de datos, ejecuta los mssql-server-extensibility-java comandos de instalación del paquete usando el mismo registro de repositorios.
  • Extensiones de lenguaje también se admiten en contenedores de Linux. No hay contenedores preconstruidos con extensiones de lenguaje, pero puedes crear uno a partir de los contenedores de SQL Server usando una plantilla de ejemplo disponible en GitHub.

  • Las extensiones de lenguaje y Machine Learning Services se instalan de forma predeterminada en Clústeres de macrodatos de SQL Server. Si usa Clústeres de macrodatos, no es necesario que siga los pasos de este artículo.

Lista de paquetes

En un dispositivo conectado a internet, descargas e instalas paquetes de forma independiente del Motor de base de datos usando el instalador de paquetes de cada sistema operativo. En la tabla siguiente se indican todos los paquetes disponibles.

Nombre del paquete Se aplica a Description
mssql-server-extensibility Todos los idiomas Marco de extensibilidad usado para la extensión de lenguaje Java
mssql-server-extensibility-java Java Marco de extensibilidad usado para la extensión de lenguaje Java que incluye un runtime de Java compatible

Aplica a: SQL Server 2019 (15.x) solo en Linux

Instalación de la extensión de lenguaje Java

Para instalar extensiones de lenguaje y Java en Linux, instala el mssql-server-extensibility-java paquete. El paquete instala automáticamente JRE 11 (si no está ya instalado) y añade la ruta de la JVM a una variable de entorno llamada JRE_HOME.

Para habilitar la extensión de lenguaje Java, compile un binario personalizado siguiendo las instrucciones de la página sobre la extensión de lenguaje Java de GitHub.

Note

En un servidor conectado a Internet, las dependencias de paquete se descargan e instalan como parte de la instalación del paquete principal. Si el servidor no está conectado a Internet, ve más detalles en la instalación sin conexión.

Puedes descargar e instalar cualquier runtime en Java, incluyendo la última versión de Microsoft Build de OpenJDK o un runtime Java con licencia oficial. A partir de SQL Server 2022 (16.x), el programa de instalación de SQL Server no instala ningún runtime de Java.

Para habilitar la extensión de lenguaje Java, compile un binario personalizado siguiendo las instrucciones de la página sobre la extensión de lenguaje Java de GitHub.

Comando de instalación de Red Hat

Para instalar Extensiones de Lenguaje para Java en Red Hat, utilice el siguiente comando.

Tip

Si es posible, ejecute yum clean all para actualizar los paquetes en el sistema antes de la instalación.

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

Comando de instalación de Ubuntu

Para instalar extensiones de lenguaje para Java en Ubuntu, utilice el siguiente comando.

Tip

Si es posible, ejecute apt-get update para actualizar los paquetes en el sistema antes de la instalación. Algunas imágenes de Docker de Ubuntu no incluyen el apt-transport-https paquete. Para instalarlo, ejecute apt-get install apt-transport-https.

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

Comando de instalación de SUSE

Para instalar Extensiones de Lenguaje para Java en SUSE, utilice el siguiente comando.

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

Configuración posterior a la instalación (requerida)

  1. Conceda permisos en Linux

    No es necesario realizar este paso si usas bibliotecas externas. Las bibliotecas externas son el enfoque recomendado. Para ayuda con la creación de una biblioteca externa a partir de tu jar archivo, consulta CREATE EXTERNAL LIBRARY.

    Si no usa bibliotecas externas, debe proporcionar permisos a SQL Server para ejecutar las clases de Java en el archivo jar.

    Para conceder acceso de lectura y ejecución a un jar archivo, ejecuta el siguiente chmod comando en el jar archivo. Siempre guarda tus archivos de clase cuando jar trabajes con SQL Server. Para obtener ayuda con la creación de un jar, consulte Creación de un archivo JAR de Java a partir de archivos de clase.

    chmod ug+rx <MyJarFile.jar>
    

    También necesitas dar mssql_satellite permisos para leer y ejecutar el jar archivo.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    La configuración adicional se realiza principalmente a través de la herramienta mssql-conf.

  2. Añada la cuenta de usuario de mssql usada para ejecutar el servicio SQL Server. Este paso es necesario si no has ejecutado la configuración antes.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Habilite el acceso de red saliente. El acceso de red saliente está deshabilitado de forma predeterminada. Para habilitar las solicitudes salientes, establece la outboundnetworkaccess propiedad booleana con la mssql-conf herramienta. Para más información, vea Configuración de SQL Server en 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. Reinicie el servicio SQL Server Launchpad y la instancia del motor de base de datos para leer los valores actualizados del archivo INI. Un mensaje de reinicio te recuerda cada vez que modificas una configuración relacionada con la extensibilidad.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Habilite la ejecución de scripts externos. Puede conectarse a una instancia de SQL Server mediante cualquier herramienta de cliente SQL Server conocida, como sqlcmd, SQL Server Management Studio (SSMS) o la extensión MSSQL para Visual Studio Code.

    EXECUTE sp_configure 'external scripts enabled', 1;
    
    RECONFIGURE WITH OVERRIDE;
    
  6. Vuelva a reiniciar el servicio mssql-launchpadd.

  7. Para cada base de datos donde quieras usar extensiones de lenguaje, registra el lenguaje externo con CREATE EXTERNAL LANGUAGE. Consulta la siguiente sección para los pasos.

Registrar lenguaje externo

Para cada base de datos donde quieras usar extensiones de lenguaje, registra el lenguaje externo con CREATE EXTERNAL LANGUAGE.

En el ejemplo siguiente se agrega un lenguaje externo denominada Java a una base de datos en SQL Server en 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"}'
);

Para la extensión Java, la variable JRE_HOME de entorno determina el camino para encontrar e inicializar la JVM.

El CREATE EXTERNAL LANGUAGE DDL proporciona un ENVIRONMENT_VARIABLES parámetro para establecer variables de entorno para el proceso que aloja la extensión. Utiliza este parámetro para establecer variables de entorno que requieren las extensiones de lenguaje externas.

Para obtener más información, consulte CREATE EXTERNAL LANGUAGE.

Comprobación de la instalación

La integración de funciones de Java no incluye librerías, pero puedes ejecutar grep -r JRE_HOME /etc para confirmar que existe la JRE_HOME variable de entorno.

Para validar la instalación, ejecute un script de T-SQL que ejecute un procedimiento almacenado del sistema que invoque a Java. Necesita una herramienta de consulta para esta tarea. Puede conectarse a una instancia de SQL Server mediante cualquier herramienta de cliente SQL Server conocida, como sqlcmd, SQL Server Management Studio (SSMS) o la extensión MSSQL para Visual Studio Code.

Instalación completa de SQL Server y extensiones de lenguaje Java

Para instalar y configurar el Motor de base de datos y la extensión del lenguaje Java en un solo procedimiento, se añaden paquetes y parámetros Java a un comando que instale el Motor de base de datos.

  1. Proporcione una línea de comandos que incluya el motor de base de datos, además de las características de la extensión de lenguaje.

    El siguiente comando añade extensibilidad Java a una instalación de Motor de base de datos.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Acepte los contratos de licencia y complete la configuración posterior a la instalación. Usa la mssql-conf herramienta.

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

    Este paso te pedirá que aceptes el contrato de licencia del motor de base de datos, que elijas una edición y que establezcas la contraseña de administrador.

  3. Reinicia el servicio si te lo piden.

    sudo systemctl restart mssql-server.service
    

Instalación desatendida

Utilice la instalación desatendida para el motor de base de datos y agregue los paquetes de mssql-server-extensibility-java.

Instalación sin conexión

Para instalar los paquetes, sigue las instrucciones de instalación sin conexión . Busca tu sitio de descargas y luego descarga los paquetes específicos que se mencionan más adelante en esta sección.

Tip

Varias herramientas de gestión de paquetes proporcionan comandos que te ayudan a determinar las dependencias de los paquetes. Para yum, utilice sudo yum deplist [package]. En Ubuntu, use sudo apt-get install --reinstall --download-only [package name] seguido de dpkg -I [package name].deb.

Sitio de descarga

Descarga los paquetes de https://packages.microsoft.com/. El sitio aloja todos los paquetes Java junto con el paquete Motor de base de datos.

Rutas de descarga

Package Distribution Ubicación de descarga
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/

Lista de paquetes

En función de las extensiones que quiera usar, descargue los paquetes necesarios relativos a un lenguaje específico. Los nombres exactos de los archivos incluyen la información de la plataforma en el sufijo, pero los siguientes nombres te ayudan a determinar qué archivos obtener.

  • Paquetes base

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

    • mssql-server-extensibility-java-15.0.1000

Limitaciones

La autenticación implícita no está disponible en Linux. El código Java que se ejecuta en el proceso externo no puede volver a conectarse al servidor para acceder a datos u otros recursos.

Gobernanza de recursos

Linux y Windows tienen paridad en la gobernanza de recursos para pools externos, pero las estadísticas de sys.dm_resource_governor_external_resource_pools actualmente tienen unidades diferentes en Linux.

Note

Las estadísticas de la siguiente tabla provienen de los subsistemas de Grupos de Control (cgroups) especificados.

Nombre de la columna Description Valor en Linux
peak_memory_kb La memoria máxima que utiliza el pool de recursos. En Linux, esta estadística tiene como origen el subsistema memory, donde el valor es memory.max_usage_in_bytes
write_io_count El total de emisións de escritura emitidas desde el último reinicio de las estadísticas de Resource Governor. En Linux, esta estadística tiene como origen el subsistema blkio, donde el valor de la fila de escritura es blkio.throttle.io_serviced
read_io_count El total de IOs leídos emitidos desde el último reinicio de las estadísticas de Resource Governor. En Linux, esta estadística proviene del blkio subsistema, donde el valor en la fila de lectura es blkio.throttle.io_serviced
total_cpu_kernel_ms El tiempo acumulado del kernel del usuario de la CPU en milisegundos desde el último reinicio de las estadísticas de Resource Governor. En Linux, esta estadística tiene como origen el subsistema cpuacct, donde el valor de la fila de usuario es cpuacct.stat
total_cpu_user_ms El tiempo acumulado de usuario de la CPU en milisegundos desde el último reinicio de las estadísticas de Resource Governor. En Linux, esta estadística proviene del cpuacct subsistema, donde el valor en la fila del sistema es cpuacct.stat
active_processes_count Número de procesos externos que se ejecutan en el momento de la solicitud En Linux, esta estadística tiene como origen el subsistema pids, donde el valor es pids.current