Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O CLR (Common Language Runtime) é o coração do Microsoft .NET Framework e fornece o ambiente de execução para todo o código do .NET Framework. O código executado dentro do CLR é chamado de código gerenciado. O CLR fornece diversas funções e serviços necessários para a execução de programas, incluindo a compilação JIT (Just-In-Time), alocação e gerenciamento de memória, imposição de segurança de tipos, tratamento de exceções, gerenciamento de threads e segurança. Consulte o SDK do .NET Framework para obter mais informações.
Com o CLR hospedado no Microsoft SQL Server (chamado de integração CLR), você pode criar procedimentos armazenados, gatilhos, funções definidas pelo usuário, tipos definidos pelo usuário e agregações definidas pelo usuário no código gerenciado. Como o código gerenciado é compilado para o código nativo antes da execução, você pode obter aumentos de desempenho significativos em alguns cenários.
O código gerenciado usa o CAS (Code Access Security) para impedir que assemblies executem determinadas operações. O SQL Server usa o CAS para ajudar a proteger o código gerenciado e impedir o comprometimento do sistema operacional ou do servidor de banco de dados.
Vantagens da integração clr
Transact-SQL foi projetado especificamente para acesso direto a dados e manipulação no banco de dados. Embora Transact-SQL se destaque no acesso e gerenciamento de dados, não é uma linguagem de programação completa. Por exemplo, Transact-SQL não dá suporte a matrizes, coleções, loops para cada, deslocamento de bits ou classes. Embora alguns desses constructos possam ser simulados no Transact-SQL, o código gerenciado tem suporte integrado para esses constructos. Dependendo do cenário, esses recursos podem representar um motivo convincente para implementar determinada funcionalidade de banco de dados no código gerenciado.
O Microsoft Visual Basic .NET e o Microsoft Visual C# oferecem funcionalidades orientadas a objetos, como encapsulamento, herança e polimorfismo. Agora, o código relacionado pode ser facilmente organizado em classes e namespaces. Quando você está trabalhando com grandes quantidades de código de servidor, isso permite que você organize e mantenha seu código com mais facilidade.
O código gerenciado é mais adequado do que o Transact-SQL para cálculos e lógica de execução complicada e apresenta amplo suporte para muitas tarefas complexas, incluindo manipulação de cadeia de caracteres e expressões regulares. Com a funcionalidade encontrada na Biblioteca do .NET Framework, você tem acesso a milhares de classes e rotinas pré-criadas. Elas podem ser facilmente acessadas de qualquer procedimento armazenado, gatilho ou função definida pelo usuário. A BCL (Biblioteca de Classes Base) inclui classes que fornecem funcionalidade para manipulação de cadeia de caracteres, operações matemáticas avançadas, acesso a arquivos, criptografia e muito mais.
Observação
Embora muitas dessas classes estejam disponíveis para uso de dentro do código CLR no SQL Server, aquelas que não são apropriadas para uso do lado do servidor (por exemplo, classes de janela), não estão disponíveis. Para obter mais informações, consulte Bibliotecas do .NET Framework com suporte.
Uma das vantagens do código gerenciado é a segurança de tipos ou a garantia de que o código acesse apenas os tipos de modos permitidos e bem definidos. Antes da execução do código gerenciado, o CLR verifica se o código é seguro. Por exemplo, o código é verificado para garantir que nenhuma memória seja lida que não tenha sido gravada anteriormente. O CLR também pode ajudar a garantir que o código não manipule a memória não gerenciada.
A integração CLR oferece a possibilidade de melhorar o desempenho. Para obter informações, consulte o desempenho da integração clr.
Escolhendo entre Transact-SQL e código gerenciado
Ao escrever procedimentos armazenados, gatilhos e funções definidas pelo usuário, uma decisão que você deve tomar é usar o Transact-SQL tradicional ou uma linguagem do .NET Framework, como Visual Basic .NET ou Visual C#. Use Transact-SQL quando o código executará principalmente o acesso a dados com pouca ou nenhuma lógica de procedimento. Use o código gerenciado para funções que utilizam intensamente a CPU e procedimentos que apresentam lógica complexa, ou quando desejar usar a BCL do .NET Framework.
Escolhendo entre execução no servidor e execução no cliente
Outro fator em sua decisão sobre usar o Transact-SQL ou o código gerenciado é onde você gostaria que seu código residisse, o computador servidor ou o computador cliente. O Transact-SQL e o código gerenciado podem ser executados no servidor. Assim, o código e os dados ficam próximos, o que possibilita o aproveitamento do poder de processamento do servidor. Por outro lado, talvez você queira evitar a colocação de tarefas intensivas do processador no servidor de banco de dados. A maioria dos computadores cliente atualmente é muito poderosa e talvez você queira aproveitar esse poder de processamento colocando o máximo de código possível no cliente. O código gerenciado pode ser executado em um computador cliente, enquanto Transact-SQL não pode.
Escolhendo entre procedimentos armazenados estendidos e código gerenciado
Procedimentos armazenados estendidos podem ser criados para executar funcionalidades que não são possíveis com procedimentos armazenados Transact-SQL. Os procedimentos armazenados estendidos podem, no entanto, comprometer a integridade do processo do SQL Server, enquanto o código gerenciado que é verificado como de tipo seguro não pode. Além disso, o gerenciamento de memória, o agendamento de threads e fibras e os serviços de sincronização são mais profundamente integrados entre o código gerenciado do CLR e do SQL Server. Com a integração do CLR, você tem uma maneira mais segura do que os procedimentos armazenados estendidos de escrever os procedimentos armazenados necessários para executar tarefas que não são possíveis no Transact-SQL. Para obter mais informações sobre a integração clr e procedimentos armazenados estendidos, consulte o desempenho da integração clr.
Consulte Também
Instalando o .NET Framework
Arquitetura da integração clr
Acesso a dados de objetos de banco de dados CLR
Introdução à integração do CLR