Integração CLR (Common Language Runtime)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

O SQL Server e a Instância Gerenciada de SQL do Azure permitem que você implemente algumas das funcionalidades com linguagens .NET usando a integração nativa do CLR (Common Language Runtime) como módulos do lado do servidor do SQL Server (procedimentos, funções e gatilhos). O CLR fornece código gerenciado com serviços como integração entre idiomas, segurança de acesso do código, gerenciamento do tempo de vida de objetos e suporte à depuração e à criação de perfis.

Para usuários do SQL Server e desenvolvedores de aplicativos, a integração CLR significa que você pode escrever procedimentos armazenados, gatilhos, tipos definidos pelo usuário, funções definidas pelo usuário (escalares e com valor de tabela) e funções agregadas definidas pelo usuário usando qualquer linguagem .NET Framework, incluindo Visual Basic .NET e Visual C#. O SQL Server inclui o .NET Framework versão 4 pré-instalado.

Este vídeo de 6 minutos mostra como usar o CLR na Instância Gerenciada de SQL do Azure:

A segurança de acesso ao código não é mais suportada

O CLR usa o CAS (Segurança de Acesso do Código) no .NET Framework, para o qual não há mais suporte como um limite de segurança. Um assembly CLR criado com PERMISSION_SET = SAFE pode ser capaz de acessar recursos externos do sistema, chamar código não gerenciado e adquirir privilégios de administrador de sistema. No SQL Server 2017 (14.x) e versões posteriores, a sp_configure opção clr strict security aprimora a segurança dos assemblies CLR. A clr strict security está habilitada por padrão e trata assemblies SAFE e EXTERNAL_ACCESS como se eles fossem marcados como UNSAFE. A clr strict security opção pode ser desabilitada para compatibilidade com versões anteriores, mas não é recomendada.

Recomendamos que você assine todos os assemblies por um certificado ou chave assimétrica, com um logon correspondente que tenha recebido UNSAFE ASSEMBLY permissão no master banco de dados. Os administradores do SQL Server também podem adicionar assemblies a uma lista de assemblies, na qual o Mecanismo de Banco de Dados deve confiar. Para obter mais informações, consulte sys.sp_add_trusted_assembly.

Quando usar módulos CLR

A integração CLR permite que você implemente recursos complexos que estão disponíveis no .NET Framework, como expressões regulares, código para acessar recursos externos (servidores, serviços Web, bancos de dados), criptografia personalizada etc. Alguns dos benefícios da integração CLR do lado do servidor são:

  • Um modelo de programação melhor. As linguagens do .NET Framework são, em muitos aspectos, mais ricas do que o Transact-SQL, oferecendo construções e recursos anteriormente não disponíveis para desenvolvedores do SQL Server. Os desenvolvedores também podem usar o poder da Biblioteca do .NET Framework, que fornece um amplo conjunto de classes que podem ser usadas para resolver problemas de programação de forma rápida e eficiente.

  • Maior segurança e proteção. O código gerenciado é executado em um ambiente CLR, hospedado pelo Mecanismo de Banco de Dados. O SQL Server usa isso para fornecer uma alternativa mais segura e protegida aos procedimentos armazenados estendidos disponíveis em versões anteriores do SQL Server.

  • Capacidade de definir tipos de dados e funções agregadas. Os tipos definidos pelo usuário e as agregações definidas pelo usuário são dois novos objetos de banco de dados gerenciados que expandem os recursos de armazenamento e consulta do SQL Server.

  • Desenvolvimento simplificado por meio de um ambiente padronizado. O desenvolvimento de banco de dados é integrado a versões futuras do ambiente de desenvolvimento Microsoft Visual Studio .NET. Os desenvolvedores usam as mesmas ferramentas para desenvolver e depurar scripts e objetos do banco de dados que usavam para escrever componentes e serviços de camada intermediária ou da camada de cliente do .NET Framework.

  • Potencial para melhorar o desempenho e a escalabilidade. Em muitas situações, os modelos de compilação e execução da linguagem do .NET Framework oferecem um desempenho aprimorado em relação ao Transact-SQL.

As Extensões de Linguagem do SQL Server fornecem um ambiente de execução alternativo para tempos de execução próximos ao mecanismo de banco de dados. Para ver uma discussão sobre as diferenças entre SQL CLR e extensões de linguagem do SQL, confira Comparação das Extensões de Linguagem do SQL Server com SQL CLR.

A tabela a seguir lista os artigos desta seção.

Artigo Descrição
Visão geral da integração do CLR Descreve os tipos de objetos que podem ser criados usando a integração CLR. Também analisa os requisitos para a criação de objetos de banco de dados usando a integração CLR.
Integração CLR - Novidades Descreve os novos recursos desta versão.
Arquitetura de integração CLR - Ambiente hospedado CLR Descreve as metas de design da integração CLR.
Habilitando a integração CLR Descreve como habilitar a integração CLR.