Compartilhar via


Integração do Common Language Runtime

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

O Microsoft 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 CLR (Common Language Runtime) nativa 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 e desenvolvedores de aplicativos do SQL Server, a integração CLR significa que agora 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 do .NET Framework, incluindo o Microsoft Visual Basic .NET e o Microsoft Visual C#. O SQL Server inclui o .NET Framework versão 4 pré-instalado.

Aviso

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 o PERMISSION_SET = SAFE pode conseguir acessar recursos externos do sistema, chamar um código não gerenciado e adquirir privilégios sysadmin. A partir do SQL Server 2017 (14.x), uma opção sp_configure chamada clr strict security é introduzida, a fim de aumentar a segurança de 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 opção clr strict security pode ser desabilitada para compatibilidade com versões anteriores, mas isso não é recomendado. A Microsoft recomenda que todos os assemblies sejam assinados por um certificado ou uma chave assimétrica com um logon correspondente que recebeu a permissão UNSAFE ASSEMBLY no banco de dados mestre. Para obter mais informações, consulte Segurança estrita do CLR. 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.

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

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 aproveitar a potência da Biblioteca do .NET Framework, que fornece um abrangente 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 aproveita 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 tópicos desta seção.

Visão geral da integração 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.

Novidades da integração CLR
Descreve os novos recursos desta versão.

Arquitetura da integração CLR
Descreve as metas de design da integração CLR.

Habilitando a integração CLR
Descreve como habilitar a integração CLR.

Confira também

Instalando o .NET Framework (somente SQL Server)
Desempenho da integração CLR