Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
O recurso Extensões de Linguagem do SQL Server usa o procedimento armazenado do sistema sp_execute_external_script como a interface para chamar o tempo de execução do .NET.
Este artigo de instruções explica os detalhes da implementação do código C# executado no SQL Server.
Onde colocar classes C#
Você chama o código C# no SQL Server carregando bibliotecas .NET compiladas (DLLs) e outras dependências no banco de dados usando a biblioteca externa DDL. Para obter mais informações, consulte Criar uma DLL .NET a partir de um projeto C#.
Princípios básicos
A seguir estão alguns princípios básicos ao executar C# no SQL Server.
Classes .NET personalizadas compiladas devem existir em arquivos DLL.
O método C# que você está chamando deve ser fornecido no
scriptparâmetro no procedimento armazenado.Se a classe pertence a um pacote, o
packageNamedeve ser fornecido.paramsé usado para passar parâmetros para uma classe C#. Não há suporte para chamar um método que requer argumentos. Portanto, os parâmetros são a única maneira de passar valores de argumento para o seu método.
Observação
Esta nota reafirma operações com e sem suporte específicas para C# no SQL Server 2019 (15.x) e versões posteriores. No procedimento armazenado, os parâmetros de entrada são suportados, enquanto os parâmetros de saída não são suportados.
Chamar código C#
O procedimento armazenado do sistema sp_execute_external_script é a interface usada para chamar o tempo de execução do .NET. O exemplo a seguir mostra um sp_execute_external_script usando a extensão .NET e parâmetros para especificar caminho, script e seu código personalizado.
Observação
Você não precisa definir qual método chamar. Por padrão, um método chamado Execute é chamado. Isso significa que você precisa seguir o SDK de extensibilidade da Microsoft para C# para SQL Server e implementar um Execute método em sua classe C#.
DECLARE @param1 AS INT;
SET @param1 = 3;
EXECUTE sp_execute_external_script
@language = N'dotnet',
@script = N'<PackageName>.<ClassName>',
@input_data_1 = N'<Input Query>',
@param1 = @param1;
Usar biblioteca externa
No SQL Server 2019 (15.x) e versões posteriores, você pode usar bibliotecas externas para a linguagem C# no Windows. Você pode compilar suas classes em um arquivo DLL e carregar a DLL e outras dependências no banco de dados usando o CREATE EXTERNAL LIBRARY DDL.
Exemplo de como carregar um arquivo DLL com biblioteca externa:
CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO
Quando ele cria uma biblioteca externa, o SQL Server automaticamente tem acesso às classes C# e você não precisa definir nenhuma permissão especial para o caminho.
O código a seguir é um exemplo de chamada Execute do método na classe MyClass de um pacote MyPackage, carregado como uma biblioteca externa:
EXECUTE sp_execute_external_script
@language = N'dotnet',
@script = N'MyPackage.MyClass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS ((column1 INT));
Para obter mais informações, consulte CREATE EXTERNAL LIBRARY.