SDK de extensibilidad de Microsoft para C# para SQL Server

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

Vea los procedimientos para implementar un programa de C# para SQL Server mediante el SDK de extensibilidad de Microsoft para .NET. El SDK es una interfaz para la extensión de lenguaje de .NET que sirve para intercambiar datos con SQL Server y para ejecutar código C# desde SQL Server.

El código es abierto y puede encontrarse en el repositorio de GitHub sobre extensiones de lenguaje de SQL Server.

Requisitos de implementación

La interfaz del SDK define un conjunto de requisitos que se deben cumplir para que SQL Server pueda comunicarse con el entorno de ejecución de .NET. Para usar el SDK, debe seguir algunas reglas de implementación en la clase principal. A continuación, SQL Server puede ejecutar un método específico en C# e intercambiar datos mediante la extensión del lenguaje .NET.

Para obtener un ejemplo de cómo puede usar el SDK, consulte Tutorial: Búsqueda de una cadena mediante expresiones regulares (regex) en C#.

Clases de SDK

El SDK consta de varias clases.

  • La clase abstracta AbstractSqlServerExtensionExecutor define la interfaz que usa la extensión de .NET para intercambiar datos con SQL Server.

  • Varias clases auxiliares implementan el objeto del conjunto de datos CSharpDataSet.

En la siguiente sección, encontrará descripciones de cada clase en el SDK. El código fuente de las clases del SDK está disponible en el repositorio de GitHub sobre extensiones de lenguaje de SQL Server.

Clase: AbstractSqlServerExtensionExecutor

La clase abstracta AbstractSqlServerExtensionExecutor contiene la interfaz que se usa para ejecutar código C# mediante la extensión del lenguaje .NET para SQL Server.

La clase C# principal debe heredar de esta clase. Por heredar de esta clase se entiende que hay ciertos métodos en la clase que debe implementar en su propia clase.

Para heredar de esta clase abstracta, se debe extender con el nombre de clase abstracta en la declaración de la clase, donde MyClass es el nombre de su clase:

public class MyClass : AbstractSqlServerExtensionExecutor {}

Como mínimo, la clase principal debe implementar el método Execute(...).

El método Execute

El método Execute es el método al que se llama desde SQL Server a través de la extensión del lenguaje .NET para invocar código C# desde SQL Server. Se trata de un método clave en el que se incluyen las operaciones principales que desea ejecutar desde SQL Server.

Para pasar argumentos de método a C# desde SQL Server, use el parámetro @param en sp_execute_external_script. El método Execute toma sus argumentos de ese modo.

public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);

El método Init

El método Init se ejecuta después del constructor y antes del método Execute. Las operaciones que se deban llevar a cabo antes de Execute se pueden efectuar en este método.

public virtual void Init(string sessionId, int taskId, int numTasks);

Clase: CSharpExtension

La clase CSharpExtension implementa todas las API de extensiones de lenguaje y devuelve resultados al host nativo.

Clase: CSharpDataSet

La clase abstracta CSharpDataSet contiene la interfaz para controlar los datos de entrada y salida que usa la extensión de .NET.