Integração do Common Language Runtime

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

O Microsoft SQL Server e Instância Gerenciada de SQL do Azure permitem implementar algumas das funcionalidades com linguagens .NET usando a integração clr (common language runtime) nativa como SQL Server módulos do lado do servidor (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 SQL Server usuários e desenvolvedores de aplicativos, a integração clr significa que agora você pode escrever procedimentos armazenados, gatilhos, tipos definidos pelo usuário, funções definidas pelo usuário (escalar e com valor de tabela) e funções de agregação definidas pelo usuário usando qualquer linguagem .NET Framework, incluindo o Microsoft Visual Basic .NET e o Microsoft Visual C#. 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 no Instância Gerenciada de SQL do Azure:

Quando usar módulos CLR

A Integração CLR permite implementar recursos complexos que estão disponíveis em .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 .NET Framework são, em muitos aspectos, mais ricas que o Transact-SQL, oferecendo constructos e funcionalidades anteriormente não disponíveis para desenvolvedores 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.

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

  • Capacidade de definir tipos de dados e funções de agregação. Tipos definidos pelo usuário e agregações definidas pelo usuário são dois novos objetos de banco de dados gerenciados que expandem os recursos de armazenamento e consulta de 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 do 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 desempenho e escalabilidade aprimorada. 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.

SQL Server extensões de linguagem fornecem um ambiente de execução alternativo para runtimes 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 criar 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.

Consulte Também

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