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

Se aplica a: SQL Server 2019 (15.x) 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.

Requisitos previos

  • La ubicación del paquete de las extensiones de Java está en los repositorios de origen de Linux para SQL Server. Si ya ha configurado repositorios de origen para la instalación del motor de base de datos, puede ejecutar los comandos de instalación de paquetes mssql-server-extensibility-java usando el mismo registro de repositorio.

Lista de paquetes

En un dispositivo conectado a Internet, los paquetes se descargan e instalan de forma independiente del motor de base de datos mediante el instalador de paquetes de cada sistema operativo. En la tabla siguiente se indican todos los paquetes disponibles.

Nombre del paquete Válido para Descripción
mssql-server-extensibility Todos los idiomas Marco de extensibilidad usado para la extensión de lenguaje Java
mssql-server-extensibility-java Java Se aplica a: SQL Server 2019 (15.x) solamente en Linux

Marco de extensibilidad usado para la extensión de lenguaje Java que incluye un runtime de Java compatible

Instalación de la extensión de lenguaje Java

Puede instalar Extensiones de lenguaje y Java en Linux si instala mssql-server-extensibility-java. Al instalar mssql-server-extensibility-java, el paquete instala automáticamente JRE 11 si aún no está instalado. También agrega la ruta de acceso de JVM a una variable de entorno denominada 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.

Nota

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.

Puede descargar e instalar cualquier entorno de ejecución de Java según sea necesario, incluidos la versión más reciente de Microsoft Build de OpenJDK o el entorno de ejecución de 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

Puede instalar Extensiones de lenguaje para Java en RedHat con el siguiente comando.

Sugerencia

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

Puede instalar Extensiones de lenguaje para Java en Ubuntu con el siguiente comando.

Sugerencia

Si es posible, ejecute apt-get update para actualizar los paquetes en el sistema antes de la instalación. Además, algunas imágenes de Docker de Ubuntu podrían no tener la opción https apt transport. Para instalarla, use 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

Puede instalar Extensiones de lenguaje para Java en SUSE con el siguiente comando.

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

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

  1. Conceda permisos en Linux

    No es necesario realizar este paso si usas bibliotecas externas. La forma recomendada de trabajar es usar bibliotecas externas. Para obtener ayuda para la creación de una biblioteca externa a partir del archivo jar, vea 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 archivo jar, ejecute el siguiente comando chmod en el archivo jar. Se recomienda colocar siempre los archivos de clase en un jar al trabajar con SQL Server. Para obtener ayuda con la creación de un jar, consulta Creación de un archivo jar de Java a partir de archivos de clase.

    chmod ug+rx <MyJarFile.jar>
    

    También debe proporcionar permisos mssql_satellite para leer o ejecutar el archivo jar.

    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. Esto es necesario si no ha ejecutado la instalación previamente.

    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, establezca la propiedad booleana outboundnetworkaccess con la herramienta mssql-conf. 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. En un mensaje de reinicio se le recuerda si se ha modificado un valor relacionado con la extensibilidad.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Habilite la ejecución de scripts externos con Azure Data Studio u otra herramienta como SQL Server Management Studio (solo Windows) que ejecute T-SQL.

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

  7. Por cada base de datos en la que quiera usar Extensiones de lenguaje, debe registrar el lenguaje externo con CREATE EXTERNAL LANGUAGE. Consulte los pasos en la sección siguiente.

Registrar lenguaje externo

Por cada base de datos en la que quiera usar Extensiones de lenguaje, debe registrar 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"}');

Respecto a la extensión de Java, se usa la variable de entorno JRE_HOME para determinar la ruta de acceso donde JVM se va a buscar e inicializar.

El DDL CREATE EXTERNAL LANGUAGE proporciona un parámetro (ENVIRONMENT_VARIABLES) para establecer variables de entorno expresamente para el proceso que hospeda la extensión. Este proceso es la forma recomendada y más eficaz de establecer las variables de entorno necesarias para las extensiones de lenguaje externas.

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

Comprobar la instalación

La integración de características de Java no incluye bibliotecas, pero puede ejecutar grep -r JRE_HOME /etc para confirmar la creación de la variable de entorno JAVA_HOME.

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. Azure Data Studio es una buena elección. Otra herramienta que se usa con frecuencia, SQL Server Management Studio, es solo para Windows. Si tiene un equipo Windows con estas herramientas, úselo para conectarse a la instalación de Linux del motor de base de datos.

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

Puede instalar y configurar el motor de base de datos y extensiones de lenguaje Java en un procedimiento si anexa paquetes y parámetros de Java a un comando que instala 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.

    Puede agregar extensibilidad de Java a la instalación de un 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. Use la herramienta mssql-conf para esta tarea.

    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. Reinicie el servicio, si se le pide.

    sudo systemctl restart mssql-server.service
    

Instalación desatendida

Mediante la instalación desatendida del motor de base de datos, agregue los paquetes de mssql-server-extensibility-java.

Instalación sin conexión

Siga las instrucciones de instalación sin conexión para ver los pasos para instalar los paquetes. Busque el sitio de descarga y luego descargue paquetes específicos mediante la lista de paquetes siguiente.

Sugerencia

Varias de las herramientas de administración de paquetes proporcionan comandos que pueden ayudar a determinar las dependencias de los paquetes. En yum, use 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

Puede descargar los paquetes desde https://packages.microsoft.com/. Todos los paquetes de Java se colocan con el paquete del motor de base de datos.

Descargar rutas

Paquete Distribución 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 de archivo exactos incluyen información de la plataforma en el sufijo, pero los nombres de archivo siguientes deben servirle de ayuda para que pueda determinar qué archivos va a obtener.

  • Paquetes base

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

    • mssql-server-extensibility-java-15.0.1000

Limitaciones

En este momento, la autenticación implícita no está disponible en Linux, lo que significa que no se puede volver a conectar al servidor desde Java en curso para acceder a datos u otros recursos.

Gobernanza de recursos

Existe paridad entre Linux y Windows para la regulación de recursos de los grupos de recursos externos, pero las estadísticas de sys.dm_resource_governor_external_resource_pools tienen actualmente unidades diferentes en Linux.

Nota:

Las estadísticas de la tabla siguiente se obtienen de los subsistemas de grupos de control (cgroups) especificados.

Nombre de la columna Descripción Valor en Linux
peak_memory_kb Cantidad máxima de memoria usada con el grupo 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 Total de operaciones de E/S de escritura emitidas desde el restablecimiento 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 Total de operaciones de E/S de lectura emitidas desde el restablecimiento 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 lectura es blkio.throttle.io_serviced
total_cpu_kernel_ms Tiempo del kernel de usuario de CPU acumulativo en milisegundos desde el restablecimiento 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 Tiempo de usuario de CPU acumulativo en milisegundos desde el restablecimiento 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 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