Criar funções CLR

É possível criar um objeto de banco de dados em uma instância do SQL Server programada em um assembly criado no CLR (common language runtime) Microsoft .NET Framework. Os objetos do banco de dados que podem aproveitar o modelo de programação avançado fornecido pelo CLR inclui funções de agregação, funções, procedimentos armazenados, gatilhos e tipos.

Criar uma função CLR em SQL Server envolve as seguintes etapas:

  • Defina a função como um método estático de uma classe em um idioma com suporte do .NET Framework. Para obter mais informações sobre como programar funções no CLR, consulte Funções CLR definidas pelo usuário. Em seguida, compilar 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 referente ao assembly registrado, usando a instrução CREATE FUNCTION.

ObservaçãoObservação

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

ObservaçãoObservação

A capacidade do SQL Server de executar o código CLR, por padrão, está desativada. É possível criar, alterar e descartar objetos do banco de dados que referenciam os módulos de código gerenciados, mas essas referências não serão executadas no SQL Server, a menos que a opção clr enabled seja 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 da Web, outros bancos de dados (incluindo as instâncias remotas do SQL Server). Isto pode ser alcançado usando diversas classes no .NET Framework, como System.IO, System.WebServices, System.Sql e assim por diante. O assembly que contém essas funções deve ser configurado pelo menos com o conjunto de permissões EXTERNAL_ACCESS para este propósito. 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. Porém, as conexões de loopback para o servidor de origem não são suportadas nas funções CLR.

Para criar, modificar ou descartar assemblies no SQL Server

Para criar uma função CLR

Acessando código nativo

Podem ser usadas funções CLR para acessar código nativo (não gerenciado), como código escrito em C ou C++, pelo uso de PInvoke de código gerenciado (consulte Calling Native Functions from Managed Code, em inglês, para obter detalhes). Isto pode permitir reutilizar o código herdado como CLR UDFs ou escrever UDFs de desempenho crítico em código nativo. Isto requer o uso de um assembly UNSAFE. Consulte Segurança de acesso a código da integração CLR para obter cuidados de uso de assemblies UNSAFE.

Consulte também

Conceitos

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

Outros recursos

Conceitos de programação da Integração CLR (Common Language Runtime)