Compartilhar via


Criar funções CLR

Você pode criar um objeto de banco de dados dentro de uma instância do SQL Server que é programada em um assembly criado no CLR (Common Language Runtime) do Microsoft .NET Framework. Os objetos de banco de dados que podem aproveitar o modelo de programação avançado fornecido pelo common language runtime incluem funções de agregação, funções, procedimentos armazenados, gatilhos e tipos.

A criação de uma função CLR no SQL Server envolve as seguintes etapas:

  • Defina a função como um método estático de uma classe em um idioma compatível com o .NET Framework. Para obter mais informações sobre como programar funções no common language runtime, consulte CLR User-Defined Functions. Em seguida, compile a classe para criar um assembly no .NET Framework usando o compilador de idioma apropriado.

  • Registre o assembly no SQL Server usando a instrução CREATE ASSEMBLY. Para obter mais informações sobre assemblies no SQL Server, consulte Assemblies (Mecanismo de Banco de Dados).

  • Crie a função que faz referência ao assembly registrado usando a instrução CREATE FUNCTION .

Observação

A implantação de um projeto do SQL Server no MicrosoftVisual Studio registra um assembly no banco de dados especificado para o projeto. A implantação do projeto também cria funções CLR no banco de dados para todos os métodos anotados com o SqlFunction atributo. Para obter mais informações, consulte Implantando objetos de banco de dados CLR.

Observação

A capacidade do SQL Server de executar código CLR está desativada por padrão. Você pode criar, alterar e remover objetos de banco de dados que fazem referência a módulos de código gerenciado, mas essas referências não serão executadas no SQL Server, a menos que a opção clr habilitada esteja habilitada usando sp_configure (Transact-SQL).

Acessando recursos externos

As funções CLR podem ser usadas para acessar recursos externos, como arquivos, recursos de rede, Serviços Web, outros bancos de dados (incluindo instâncias remotas do SQL Server). Isso pode ser feito usando várias classes no .NET Framework, como System.IO, e System.WebServicesSystem.Sqlassim por diante. O assembly que contém essas funções deve, pelo menos, ser configurado com o conjunto de permissões EXTERNAL_ACCESS para essa finalidade. Para obter mais informações, consulte CREATE ASSEMBLY (Transact-SQL). O Provedor Gerenciado do Cliente SQL pode ser usado para acessar instâncias remotas do SQL Server. No entanto, não há suporte para conexões de loopback com o servidor de origem em funções CLR.

Para criar, modificar ou remover assemblies no SQL Server

Para criar uma função CLR

Acessando código nativo

As funções CLR podem ser usadas para acessar código nativo (não gerenciado), como código escrito em C ou C++, por meio do uso de PInvoke do código gerenciado (consulte Chamando funções nativas do código gerenciado para obter detalhes). Isso pode permitir que você reutilizar o código herdado como UDFs CLR ou escrever UDFs críticos para o desempenho em código nativo. Isso requer o uso de um assembly UNSAFE. Consulte a Segurança de Acesso ao Código de Integração clr para obter cuidado sobre o uso de assemblies UNSAFE.

Consulte Também

Criar funções definidas pelo usuário (Mecanismo de Banco de Dados)
Criar agregações definidas pelo usuário
Executar funções definidas pelo usuário
Exibir funções definidas pelo usuário
Conceitos de programação de integração do CLR (Common Language Runtime)