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) y versiones posteriores
La característica Extensiones de lenguaje de SQL Server usa el procedimiento almacenado del sistema sp_execute_external_script como interfaz para invocar el entorno de ejecución de Java.
En este artículo de procedimientos se explican los detalles de implementación de las clases y los métodos de Java que se ejecutan en SQL Server.
Dónde se deben colocar las clases de Java
Hay dos métodos para llamar a las clases de Java en SQL Server:
Coloque archivos
.classo.jaren la ruta de clase de Java.Cargue clases compiladas en un archivo
.jary otras dependencias en la base de datos mediante el DDL de biblioteca externa.
Nota:
Como recomendación general, use archivos .jar en vez de archivos .class individuales. Se trata de una práctica común en Java que facilitará la experiencia global. Consulte también Creación de un archivo .jar de Java a partir de archivos de clase.
Uso de classpath
Principios básicos
A continuación se muestran algunos principios básicos a la hora de ejecutar Java en SQL Server.
Debe haber clases de Java personalizadas compiladas en los archivos
.classo.jarde la ruta de clase de Java. El parámetro CLASSPATH proporciona la ruta de acceso a los archivos de Java compilados.El método Java al que se está llamando se debe proporcionar en el parámetro
scriptdel procedimiento almacenado.Si la clase pertenece a un paquete, se debe proporcionar
packageName.paramssirve para pasar parámetros a una clase de Java. No se admiten las llamadas a un método que requiere argumentos. Por lo tanto, los parámetros son la única forma de pasar valores de argumento al método.
Nota:
Esta nota modifica las operaciones admitidas y no admitidas que son específicas de Java en SQL Server 2019 (15.x) y versiones posteriores. En el procedimiento almacenado, se admiten parámetros de entrada, pero no parámetros de salida.
Llamar a una clase de Java
El procedimiento almacenado del sistema sp_execute_external_script es la interfaz que se utiliza para llamar al entorno de ejecución de Java. En el ejemplo siguiente se muestra un sp_execute_external_script que usa la extensión de Java, así como parámetros para especificar la ruta de acceso, el script y el código personalizado.
Nota:
No necesitas definir qué método llamar. De forma predeterminada, se llama a un método denominado execute. Esto significa que debe seguir el SDK de extensibilidad de Microsoft para Java en SQL Server e implementar un método execute en la clase Java.
DECLARE @param1 AS INT;
SET @param1 = 3;
EXECUTE sp_execute_external_script
@language = N'Java',
@script = N'<packageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
Configurar CLASSPATH
Una vez compilada la clase o clases Java y creado un archivo .jar en la classpath de Java, tiene dos opciones para proporcionar la ruta a la extensión Java de SQL Server:
Usar bibliotecas externas
La opción más sencilla consiste en hacer que SQL Server busque automáticamente las clases creando bibliotecas externas y apuntando la biblioteca hacia un archivo jar. Usar bibliotecas externas para Java
Registrar una variable de entorno del sistema
Puede crear una variable de entorno del sistema y proporcionar las rutas de acceso al archivo
.jarque contiene las clases. Cree una variable de entorno del sistema denominadaCLASSPATH.
Usar una biblioteca externa
En SQL Server 2019 (15.x) y versiones posteriores, puede usar bibliotecas externas para el lenguaje Java en Windows y Linux. Puede compilar las clases en un .jar archivo y cargar el .jar archivo y otras dependencias en la base de datos mediante DDL CREATE EXTERNAL LIBRARY .
Ejemplo de cómo cargar un archivo .jar con la biblioteca externa:
CREATE EXTERNAL LIBRARY myJar
FROM (CONTENT = '<local path to .jar file>')
WITH (LANGUAGE = 'Java');
GO
Al crear una biblioteca externa, SQL Server obtiene acceso automático a las clases de Java y no será necesario establecer ningún permiso especial en la ruta de clase.
El código que se muestra a continuación es un ejemplo de cómo llamar a un método en una clase desde un paquete cargado como biblioteca externa:
EXECUTE sp_execute_external_script
@language = N'Java',
@script = N'MyPackage.MyCLass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));
Para obtener más información, consulte CREATE EXTERNAL LIBRARY.
Conexión de bucle invertido en SQL Server
Use una conexión de bucle invertido para volver a conectar con SQL Server a través de JDBC a fin de leer o escribir datos de Java ejecutado desde sp_execute_external_script. Esto se puede usar cuando no se pueden usar los argumentos InputDataSet y OutputDataSet de sp_execute_external_script .
Para realizar una conexión loopback en Windows, utilice el siguiente ejemplo:
jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;
Para realizar una conexión de bucle invertido en Linux, el controlador JDBC requiere que se definan tres propiedades de conexión en el certificado siguiente:
Autenticación de certificados de clientes