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

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

Aprenda a instalar el componente Extensión de lenguaje Java para SQL Server en Windows. La extensión de lenguaje Java forma parte de las Extensiones de lenguaje de SQL Server.

Nota:

Este artículo trata la instalación de la extensión de lenguaje Java para SQL Server en Windows. Para Linux, consulte Instalación de la extensión de lenguaje Java de SQL Server en Linux.

Requisitos previos

Nota:

Las funcionalidades de características y las opciones de instalación varían entre las versiones de SQL Server. Use la lista desplegable del selector de versiones para elegir la versión adecuada de SQL Server.

  • Se necesita el programa de instalación de SQL Server si quiere instalar la compatibilidad con la extensión de lenguaje Java.

  • 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. En SQL Server 2022 (16.x) y versiones posteriores, el entorno de ejecución de Java no lo instala el programa de instalación de SQL Server.

  • Se necesita una instancia del motor de base de datos. No se pueden instalar únicamente las características de la extensión de lenguaje Java, aunque se pueden agregar de manera incremental a una instancia existente.

  • De cara a la continuidad empresarial, se admiten Grupos de disponibilidad Always On en las extensiones de lenguaje. Debe instalar las extensiones de lenguaje y configurar los paquetes en cada nodo. La instalación de la extensión de lenguaje Java se admite en un clúster de conmutación por error en SQL Server.

  • No instale las extensiones de lenguaje de SQL Server ni la extensión de lenguaje Java en un controlador de dominio. Se producirá un error en la parte de las extensiones de lenguaje del programa de instalación.

  • 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.

Importante

Una vez finalizada la instalación, asegúrese de completar los pasos posteriores a la configuración que se describen en este artículo. Estos pasos incluyen cómo habilitar SQL Server para usar código externo y cómo agregar las cuentas necesarias para que SQL Server ejecute código Java en su nombre. Normalmente, si se realizan cambios en la configuración, es necesario reiniciar la instancia o el servicio Launchpad.

JRE o JDK de Java

Nota:

Las funcionalidades de características y las opciones de instalación varían entre las versiones de SQL Server. Use la lista desplegable del selector de versiones para elegir la versión adecuada de SQL Server.

Con SQL Server 2022 (16.x), puede descargar e instalar cualquier entorno de ejecución de Java, incluidos la versión más reciente de Microsoft Build de OpenJDK o el entorno de ejecución de Java con licencia oficial.

Actualmente, Java 11 es la versión admitida en Windows. Java Runtime Environment (JRE) es el requisito mínimo, pero Java Development Kit (JDK) es útil si necesita el compilador de Java y los paquetes de desarrollo. Dado que JDK lo incluye todo, si lo instala, JRE no será necesario. En Windows, se recomienda instalar JDK en la carpeta /Program Files/ predeterminada, si es posible. De lo contrario, se necesitará configuración adicional para conceder permisos a los archivos ejecutables. Para más información, vea la sección sobre concesión de permisos (Windows) de este documento.

Hay dos formas de instalar y usar Java con SQL Server 2019 (15.x) y versiones posteriores:

  1. Use el entorno de ejecución de Java predeterminado, que se incluye con la instalación de SQL Server.

    En la tabla siguiente se enumeran las versiones predeterminadas de Java que se incluyen en la configuración:

    Versión de SQL Server Versión de Java predeterminada
    SQL Server 2019 (15.x) CU 23 y versiones posteriores Microsoft Build de OpenJDK 11.0.19
    SQL Server 2019 (15.x) RTM - CU22 Azul Zulu JRE 11.0.3
  2. Usar la distribución Java de su preferencia en lugar del runtime de Java predeterminado.

    Actualmente, Java 11 es la versión admitida en Windows. Java Runtime Environment (JRE) es el requisito mínimo, pero Java Development Kit (JDK) es útil si necesita el compilador de Java y los paquetes de desarrollo. Dado que JDK lo incluye todo, si lo instala, JRE no será necesario. En Windows, se recomienda instalar JDK en la carpeta /Program Files/ predeterminada, si es posible. De lo contrario, se necesitará configuración adicional para conceder permisos a los archivos ejecutables. Para más información, vea la sección sobre concesión de permisos (Windows) de este documento.

Nota:

Dado que Java es compatible con versiones anteriores, las versiones anteriores podrían funcionar, pero la versión admitida y probada para SQL Server 2019 (15.x) es Java 11.

Obtener los medios de instalación

La ubicación de descarga de SQL Server depende de la edición:

  • Ediciones SQL Server Enterprise, Standard y Express. Estas ediciones tienen licencia para su uso en producción. En el caso de las ediciones Enterprise y Standard, póngase en contacto con su proveedor de software para obtener los soportes de instalación. Encontrará información sobre la adquisición y un directorio de asociados de Microsoft en el sitio web de adquisición de Microsoft.
  • Edición gratuita más reciente.

Ejecución del programa de instalación

En instalaciones locales, debe ejecutar el programa de instalación como administrador. Si instala SQL Server desde un recurso compartido remoto, deberá usar una cuenta de dominio que tenga permisos de lectura y ejecución para dicho recurso.

  1. Inicie el asistente para la instalación de SQL Server.

  2. En la pestaña Instalación, seleccione Nueva instalación independiente de SQL Server o agregar características a una instalación existente.

  1. En la página Selección de características , seleccione estas opciones:

    Servicios de motor de base de datos: para usar las extensiones de lenguaje con SQL Server, debe instalar una instancia del motor de base de datos. Puede usar una instancia predeterminada o una con nombre.

    Machine Learning Servicios y extensiones de lenguaje: esta opción instala el componente de extensiones de lenguaje que admite la ejecución de código Java.

    • Si quiere instalar el tiempo de ejecución de Java predeterminado, seleccione tanto Servicios de aprendizaje automático y extensiones de lenguaje como Java.

    • Si quiere usar su propio runtime de Java, seleccione Machine Learning Services y extensiones de lenguaje. No seleccione Java.

    • Si quiere usar R y Python, vea Instalación de SQL Server Machine Learning Services (Python y R) en Windows.

    Screenshot of the Feature options for Language Extensions.

    1. Si elige Java en el paso anterior para instalar el runtime de Java predeterminado, aparecerá la página Ubicación de instalación de Java.

      Instale el java predeterminado incluido con esta instalación. La opción Proporcionar la ubicación de otra versión que se haya instalado en este equipo no se usa en las extensiones de lenguaje.

      Screenshot of the Java install location.

  1. En la página Selección de características , seleccione estas opciones:

    Servicios de motor de base de datos: para usar las extensiones de lenguaje con SQL Server, debe instalar una instancia del motor de base de datos. Puede usar una instancia predeterminada o una con nombre.

    Machine Learning Servicios y extensiones de lenguaje: esta opción instala el componente de extensiones de lenguaje que admite la ejecución de código Java.

    Screenshot of instance features.

  1. En la página Listo para instalar, confirme que estas selecciones se han realizado y haga clic en Instalar.

    • Servicios de Motor de base de datos
    • Machine Learning Services y extensiones de lenguaje

    Tome nota de la ubicación de la carpeta en la ruta de acceso ..\Setup Bootstrap\Log donde se almacenan los archivos de configuración. Una vez que se haya completado la instalación, podrá revisar los componentes instalados en el archivo de resumen.

  2. Cuando finalice la instalación, si el programa indica que se reinicie el equipo, hágalo. Es importante leer el mensaje del Asistente para instalación tras finalizar el programa de instalación. Para obtener más información, vea View and Read SQL Server Setup Log Files.

Adición de la variable JRE_HOME

JRE_HOME es una variable de entorno del sistema que especifica la ubicación del intérprete de Java. En este paso, crearemos una variable de entorno del sistema para el intérprete en Windows.

  1. Busque y copie la ruta de acceso principal de JRE.

    Por ejemplo, la ruta de acceso principal de JRE del runtime predeterminado de Java Zulu JRE 11.0.3 es %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\.

    Según cuál sea la ruta de acceso de instalación de SQL Server, o si se elige otro runtime de Java, la ubicación de JDK o de JRE podría ser diferente de la ruta de acceso de ejemplo anterior. Incluso si tiene instalado JDK, a menudo se obtiene una subcarpeta de JRE como parte de esa instalación, por lo que deberá apuntar a la carpeta de JRE en ese caso. La extensión Java intenta cargar jvm.dll desde la ruta de acceso %JRE_HOME%\bin\server.

  1. Busque y copie la ruta de acceso principal de JRE.

    Esta ruta depende del tiempo de ejecución y de las opciones de instalación.

    La extensión Java intenta cargar jvm.dll desde la ruta de acceso %JRE_HOME%\bin\server.

  1. En el panel de control, abra Sistema y seguridad, abra Sistema y seleccione Propiedades del sistema > Avanzadas.

  2. Seleccione Variables de entorno.

  3. Cree una variable del sistema para JRE_HOME con el valor de la ruta de acceso de JDK/JRE (que encontrará en el paso 1).

  1. Reinicie Launchpad.

    1. Abra el Administrador de configuración de SQL Server.

    2. En Servicios de SQL Server, haga clic con el botón derecho en Launchpad de SQL Server y elija Reiniciar.

  1. Registro de la extensión del lenguaje. Siga estos pasos para descargar y registrar la extensión del lenguaje Java, que se usa para el entorno de ejecución personalizado de Java.

    1. Descargue el archivo java-lang-extension-windows-release.zip de la extensión de lenguaje Java para el repositorio de GitHub de SQL Server. Descargue el archivo java-lang-extension-windows.zip más reciente de Windows. Si no ha instalado el java predeterminado desde el programa de instalación de SQL Server, asegúrese de que la versión de JRE coincide con la que se descarga desde GitHub. Si prefiere usar su propia versión de JRE instalada, es posible que tenga que compilar java-lang-extension desde el código fuente de GitHub.

    2. Use Azure Data Studio para conectarse a la instancia de SQL Server y ejecute el comando de T-SQL siguiente para registrar la extensión del lenguaje Java con CREATE EXTERNAL LANGUAGE.

    3. Modifique la ruta de acceso de esta instrucción para reflejar la ubicación del archivo ZIP descargado de la extensión del lenguaje (java-lang-extension-windows-release.zip) y la ubicación de la instalación personalizada de Java (%ProgramFiles%\Python).

    CREATE EXTERNAL LANGUAGE [Java]
    FROM (CONTENT = N'C:\path\to\java-lang-extension-windows-release.zip',
        FILE_NAME = 'javaextension.dll',
        ENVIRONMENT_VARIABLES = N'{"JAVAHOME": "C:\\Program Files\\Java"}');
    GO
    
  2. Reinicie Launchpad.

    1. Abra el Administrador de configuración de SQL Server.

    2. En Servicios de SQL Server, haga clic con el botón derecho en Launchpad de SQL Server y elija Reiniciar.

Concesión de acceso a la carpeta de JRE no predeterminada

Si no instaló el runtime predeterminado Java incluido con SQL Server ni tampoco el Java en /Program Files, deberá realizar los siguientes pasos.

Si no instaló Java en archivos de programa, debe realizar los pasos siguientes.

Ejecute los comandos icacls desde una línea con privilegios elevados para conceder acceso a las cuentas de servicio SQLRUsergroup y de SQL Server (en ALL_APPLICATION_PACKAGES) para acceder a JRE. Estos comandos conceden acceso de forma recursiva a todos los archivos y carpetas en la ruta de acceso de directorio especificada.

  1. Para conceder permisos de SQLRUserGroup

    En el caso de una instancia con nombre, anexe el nombre de la instancia a SQLRUsergroup (por ejemplo, SQLRUsergroupINSTANCENAME).

    icacls "<PATH to JRE>" /grant "SQLRUsergroup":(OI)(CI)RX /T
    

    Este paso se puede omitir si se ha instalado JDK/JRE en la carpeta predeterminada de Archivos de programa en Windows.

  2. Para conceder permisos de AppContainer. Este comando concede permisos al SID del equipo S-1-15-2-1, que es equivalente a ALL APPLICATION PACKAGES en una versión en inglés de Windows. Como alternativa, puede usar icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T en una versión en inglés de Windows.

    icacls "<PATH to JRE>" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

Reinicie el servicio.

Cuando se haya completado la instalación, reinicie el motor de base de datos antes de continuar con el paso siguiente para habilitar la ejecución de scripts.

Al reiniciar el servicio, también se reiniciará automáticamente el servicio SQL Server Launchpad relacionado.

Para reiniciar el servicio, puede hacer clic con el botón derecho en el comando Reiniciar de la instancia en SSMS, con el panel Servicios del panel de control o emplear el Administrador de configuración de SQL Server.

Habilitación de la ejecución de scripts

  1. Abra SQL Server Management Studio. Conéctese a la instancia en la que ha instalado las extensiones de lenguaje, haga clic en Nueva consulta para abrir una ventana de consulta y ejecute el siguiente comando:

    EXEC sp_configure;
    

    La característica está desactivada (value es 0) de forma predeterminada, y un administrador debe habilitarla expresamente para poder ejecutar código Java.

  2. Para habilitar la característica de scripting externo, ejecute la siguiente instrucción:

    EXEC sp_configure 'external scripts enabled', 1
    GO
    RECONFIGURE WITH OVERRIDE
    

    Si ya ha habilitado la característica para Machine Learning Services, no ejecute RECONFIGURE una segunda vez para las extensiones de lenguaje. La plataforma de extensibilidad subyacente admite ambos.

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 de SQL Server en Windows.

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO

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

Comprobar la instalación

Compruebe el estado de instalación de la instancia en los registros de instalación.

Haga lo siguiente para comprobar que se están ejecutando todos los componentes que se usan para iniciar el script externo.

  1. En SQL Server Management Studio o Azure Data Studio, abra una nueva ventana de consulta y ejecute la siguiente instrucción:

    EXEC sp_configure 'external scripts enabled';
    

    El run_value ahora está establecido en 1.

  2. Abra el panel de Servicios o el Administrador de configuración de SQL Server y compruebe que el servicio SQL Server Launchpad se está ejecutando. Debe tener un servicio por cada instancia del motor de base de datos que tenga instaladas extensiones de lenguaje. Para obtener más información sobre el servicio, consulte Arquitectura de extensibilidad en extensiones de lenguaje de SQL Server.

Configuración adicional

Si el paso de comprobación se ejecuta correctamente, puede ejecutar código Java en SQL Server Management Studio, Azure Data Studio, Visual Studio Code o cualquier otro cliente que pueda enviar instrucciones T-SQL al servidor.

Si se produjo un error al ejecutar el comando, revise los pasos de configuración adicional de esta sección. Es posible que tenga que crear otras configuraciones adicionales adecuadas para el servicio o la base de datos.

En el nivel de instancia, la configuración adicional podría incluir:

En la base de datos, puede que necesite las siguientes actualizaciones de configuración:

Nota:

El hecho de que se requiera una configuración adicional depende del esquema de seguridad, del lugar en el que se haya instalado SQL Server y de cómo se espera que los usuarios se conecten a la base de datos y ejecuten scripts externos.

Optimizaciones sugeridas

Ahora que todo funciona, puede que también le interese optimizar el servidor para admitir la extensión de lenguaje Java.

Optimización del servidor para la extensión de lenguaje Java

La configuración predeterminada del programa de instalación de SQL Server está diseñada para optimizar el equilibrio del servidor para diversos servicios que el motor de base de datos admite, entre otros, procesos de extracción, transformación y carga de datos (ETL), creación de informes, auditoría y aplicaciones que usan datos de SQL Server. Por lo tanto, en la configuración predeterminada podría ver que los recursos para extensiones de lenguaje a veces están restringidos, especialmente en operaciones que usan mucha memoria.

Para asegurarse de que se asignan a los trabajos de extensiones de lenguaje la prioridad y los recursos correctos, se recomienda usar Resource Governor de SQL Server para configurar un grupo de recursos externos. Puede que también le interese cambiar la cantidad de memoria asignada al motor de base de datos o aumentar el número de cuentas que se ejecutan en el servicio SQL Server Launchpad.

Si usa la edición Standard Edition y no dispone de Resource Governor, puede usar vistas de administración dinámica (DMV) y eventos extendidos, así como la supervisión de eventos de Windows, como ayuda para administrar los recursos de servidor.

Paso siguiente

Los desarrolladores de Java pueden empezar con algunos ejemplos sencillos y conocer los aspectos básicos del funcionamiento de Java con SQL Server. Para conocer el siguiente paso, vea el siguiente vínculo: