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.