Instalación de la extensión de lenguaje Java de SQL Server en Linux
Se aplica a: SQL Server 2019 (15.x) - 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.
Requisitos previos
La versión de Linux debe ser compatible con SQL Server, pero no incluye el motor de Docker. Las versiones admitidas son:
Debe tener una herramienta para ejecutar comandos de Transact-SQL (T-SQL). Se necesita un editor de consultas para la configuración y la validación posteriores a la instalación. Recomendamos Azure Data Studio, una descarga gratuita que se ejecuta en Linux.
- 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.
Extensiones de lenguaje también se admite en contenedores de Linux. No se proporcionan contenedores preintegrados con Extensiones de lenguaje, pero puede crear uno a partir de los contenedores de SQL Server mediante 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. Para más información, consulta Ejecución de scripts de Python y R con Machine Learning Services en Clústeres de macrodatos de SQL Server 2019.
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)
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 LIBRARYSi 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 archivojar
. Se recomienda colocar siempre los archivos de clase en unjar
al trabajar con SQL Server. Para obtener ayuda con la creación de unjar
, 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 archivojar
.chown mssql_satellite:mssql_satellite <MyJarFile.jar>
La configuración adicional se realiza principalmente a través de la herramienta mssql-conf.
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
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
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
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;
Vuelva a reiniciar el servicio
mssql-launchpadd
.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.
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
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.
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 |