Compartilhar via


Criando 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, 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 referente ao assembly registrado, usando a instrução CREATE FUNCTION.

ObservaçãoObservaçã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 Implantando objetos de banco de dados CLR.

ObservaçãoObservação

A capacidade do SQL Server para executar o código CLR, por padrão, está desativada. É possível criar, alterar e descartar objetos do banco de dados referentes aos módulos de código gerenciados, mas essas referências não serão executadas no SQL Server, a menos que clr enabled Option 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 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 auto-retorno 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