Procedimiento para llamar al entorno de ejecución de .NET en las extensiones de lenguaje de SQL Server
Se aplica a: SQL Server 2019 (15.x) y versiones posteriores
La función de Extensiones del lenguaje de SQL Server usa el procedimiento almacenado del sistema sp_execute_external_script como interfaz para llamar al tiempo de ejecución de NET.
En este artículo de procedimientos se explican los detalles de implementación del código C# que se ejecuta en SQL Server.
Dónde se deben colocar las clases de C#
Para llamar al código C# en SQL Server, cargue bibliotecas de .NET compiladas (DLL) y otras dependencias en la base de datos mediante el DDL de la biblioteca externa. Para obtener más información, consulte Creación de un archivo DLL de .NET a partir de proyecto de C#.
Principios básicos
A continuación se muestran algunos principios básicos a la hora de ejecutar C# en SQL Server.
Las clases de .NET personalizadas compiladas deben existir en archivos DLL.
El método C# al que se está llamando se debe proporcionar en el parámetro
script
del procedimiento almacenado.Si la clase pertenece a un paquete, se debe proporcionar
packageName
.params
sirve para pasar parámetros a una clase de C#. 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 C# 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.
Llamada al código C#
El procedimiento almacenado del sistema sp_execute_external_script es la interfaz que se usa para llamar al entorno de ejecución de .NET. En el ejemplo siguiente se muestra un sp_execute_external_script
que usa la extensión de .NET, así como parámetros para especificar la ruta de acceso, la secuencia de comandos y el código personalizado.
Nota:
No es necesario definir el método al que se va a llamar. De forma predeterminada, se llama a un método denominado Execute
. Esto significa que debe seguir el SDK de extensibilidad de Microsoft para C# para SQL Server e implementar un método Execute
en la clase C#.
DECLARE @param1 INT;
SET @param1 = 3;
EXEC sp_execute_external_script
@language = N'dotnet',
@script = N'<PackageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
Usar una biblioteca externa
En SQL Server 2019 (15.x) y versiones posteriores, puede usar bibliotecas externas para el lenguaje C# en Windows. Puede compilar las clases en un archivo DLL y cargar el archivo DLL junto con otras dependencias en la base de datos mediante el DDL CREATE EXTERNAL LIBRARY.
Ejemplo de cómo cargar un archivo DLL con la biblioteca externa:
CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO
Al crear una biblioteca externa, SQL Server obtiene acceso automático a las clases de C# y no será necesario establecer ningún permiso especial en la ruta.
El código que se muestra a continuación es un ejemplo de cómo llamar al método Execute
en una clase MyClass
desde un paquete MyPackage
, cargado como biblioteca externa:
EXEC sp_execute_external_script
@language = N'dotnet',
@script = N'MyPackage.MyClass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));
Para obtener más información, vea CREATE EXTERNAL LIBRARY.