Compartilhar via


Criar funções CLR

Crie um objeto de banco de dados em uma instância do SQL Server que seja programado em um assembly criado no CLR (Common Language Runtime) do 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 Common Language Runtime, veja 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 em 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 SQL Server no MicrosoftVisual 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 Deploying CLR Database Objects.

Observação

A capacidade do SQL Server de executar o código CLR, por padrão, está desativada. É possível criar, alterar e remover objetos do banco de dados que fazem referência aos 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 Option 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.Sqle 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 (veja Chamando funções nativas com base no código gerenciado 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. Veja Segurança de acesso a código da integração CLR para obter advertências 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 da Integração CLR (Common Language Runtime)