Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Tu distribución Linux debe ser compatible con SQL Server. Los contenedores se cubren por separado en una bala posterior. Las distribuciones soportadas incluyen:
Necesitas un editor de consultas para ejecutar comandos Transact-SQL (T-SQL) para la configuración y validación posterior a la instalación. Recomendamos la extensión MSSQL para Visual Studio Code. Es una descarga gratuita que funciona en Linux.
- 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-javacomandos 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)
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
jararchivo, 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
jararchivo, ejecuta el siguientechmodcomando en eljararchivo. Siempre guarda tus archivos de clase cuandojartrabajes con SQL Server. Para obtener ayuda con la creación de unjar, 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_satellitepermisos para leer y ejecutar eljararchivo.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
mssqlusada para ejecutar el servicio SQL Server. Este paso es necesario si no has ejecutado la configuración antes.sudo /opt/mssql/bin/mssql-conf setupHabilite el acceso de red saliente. El acceso de red saliente está deshabilitado de forma predeterminada. Para habilitar las solicitudes salientes, establece la
outboundnetworkaccesspropiedad booleana con lamssql-confherramienta. 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 1Reinicie 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.serviceHabilite 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;Vuelva a reiniciar el servicio
mssql-launchpadd.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.
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-javaAcepte los contratos de licencia y complete la configuración posterior a la instalación. Usa la
mssql-confherramienta.sudo /opt/mssql/bin/mssql-conf setupEste 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.
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.1000mssql-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 |