Partilhar via


SDK de Extensibilidade da Microsoft para C# para SQL Server

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores

Saiba como implementar um programa C# para o SQL Server usando o SDK de Extensibilidade da Microsoft para .NET. O SDK é uma interface para a extensão de linguagem .NET que é usado para trocar dados com SQL Server e para executar código C# do SQL Server.

O código é de software livre e pode ser encontrado no Repositório GitHub de Extensões de Linguagem do SQL Server.

Requisitos de implementação

A interface do SDK define um conjunto de requisitos que precisam ser atendidos para que o SQL Server se comunique com o runtime do .NET. Para usar o SDK, você precisa seguir algumas regras de implementação em sua classe principal. O SQL Server pode executar um método específico em C# e trocar dados usando a extensão de linguagem .NET.

Para obter um exemplo de como você pode usar o SDK, confira o Tutorial: Pesquisar uma sequência usando expressões regulares (regex) em C#.

Classes de SDK

O SDK consiste em várias classes.

  • A classe abstrata AbstractSqlServerExtensionExecutor define a interface que a extensão .NET usa para trocar dados com o SQL Server.

  • Várias classes auxiliares implementam o objeto do conjunto de dados CSharpDataSet.

Na seção a seguir, você encontrará descrições de cada classe no SDK. O código-fonte das classes de SDK está disponível no Repositório GitHub de extensões de linguagem do SQL Server.

Classe: AbstractSqlServerExtensionExecutor

A classe abstrata AbstractSqlServerExtensionExecutor contém a interface usada para executar o código C# pela extensão de linguagem .NET para SQL Server.

Sua classe C# principal precisa herdar dessa classe. Herdar dessa classe significa que há certos métodos na classe que você precisa implementar em sua própria classe.

Para herdar dessa classe abstrata, é necessário estender com o nome da classe abstrata na declaração da classe, onde MyClass é o nome da sua classe:

public class MyClass : AbstractSqlServerExtensionExecutor {}

No mínimo, sua classe principal precisa implementar o método Execute(...).

O método Execute

O método Execute é o método que é chamado no SQL Server por meio da extensão de linguagem .NET para invocar o código C# do SQL Server. Trata-se de um método-chave em que você inclui as operações principais que deseja executar no SQL Server.

Para passar argumentos de método para o C# no SQL Server, use o parâmetro @param no sp_execute_external_script. O método Execute recebe argumentos dessa maneira.

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

O método Init

O método Init é executado após o construtor e antes do método Execute. Todas as operações que precisam ser executadas antes de Execute podem ser feitas neste método.

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

Classe: CSharpExtension

A classe CSharpExtension implementa todas as APIs de extensões de linguagem e retorna resultados para o host nativo.

Classe: CSharpDataSet

A classe abstrata CSharpDataSet contém a interface para manipular dados de entrada e saída usados pela extensão .NET.