Integração CLR (Common Language Runtime)
Aplica-se a:SQL ServerAzure SQL Managed Instance
O SQL Server e o Instância Gerenciada SQL do Azure permitem implementar 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 ao código, gerenciamento do tempo de vida do objeto e suporte à depuração e criação de perfil.
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 do .NET Framework, incluindo C# Visual Basic .NET. 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 SQL do Azure:
A segurança de acesso ao código não é mais suportada
O CLR usa o CAS (Code Access Security) no .NET Framework, que não é mais suportado como um limite de segurança. Um assembly CLR criado com PERMISSION_SET = SAFE
pode acessar recursos externos do sistema, chamar código não gerenciado e adquirir privilégios sysadmin. No SQL Server 2017 (14.x) e versões posteriores, a opção sp_configure
, de segurança estrita clr, aumenta a segurança dos assemblies CLR.
clr strict security
está habilitado por padrão e trata SAFE
e EXTERNAL_ACCESS
assemblies como se estivessem marcados UNSAFE
. A opção clr strict security
pode ser desativada 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 permissão UNSAFE ASSEMBLY
no banco de dados master
. Os administradores do SQL Server também podem adicionar assemblies a uma lista de assemblies, nos quais 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 implementar 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 melhor modelo de programação. As linguagens do .NET Framework são, em muitos aspetos, 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 extenso 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 de tempo de execução de linguagem comum, hospedado pelo Mecanismo de Banco de Dados. O SQL Server usa isso para fornecer uma alternativa mais segura aos procedimentos armazenados estendidos disponíveis em versões anteriores do SQL Server.
Capacidade de definir tipos de dados e funções agregadas. 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 do SQL Server.
Desenvolvimento simplificado através de um ambiente padronizado. O desenvolvimento de banco de dados é integrado em versões futuras do ambiente de desenvolvimento do Visual Studio .NET. Os desenvolvedores usam as mesmas ferramentas para desenvolver e depurar objetos e scripts de banco de dados que usam para escrever componentes e serviços do .NET Framework de camada intermediária ou de camada de cliente.
Potencial para melhorar o desempenho e a escalabilidade. Em muitas situações, os modelos de compilação e execução da linguagem .NET Framework oferecem desempenho aprimorado em relação ao Transact-SQL.
Extensões de Linguagem do SQL Server fornecer um ambiente de execução alternativo para tempos de execução próximos ao Mecanismo de Banco de Dados. Para obter uma discussão sobre as diferenças entre as extensões de linguagem SQL CLR e SQL, consulte Compare as extensões de linguagem do SQL Server com o SQL CLR.
A tabela a seguir lista os artigos desta seção.
Artigo | Descriçã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. |
O que há de novo na integração CLR? | Descreve os novos recursos nesta versão. |
Arquitetura de integração CLR - Ambiente hospedado CLR | Descreve os objetivos de design da integração CLR. |
Habilitar a integração CLR | Descreve como habilitar a integração CLR. |