Habilitando CLR no SQL Server

Compartilhe este artigo!

Sobre o autor

Entre em contato...

Redação ForumWeb

Redação ForumWeb Equipe de desenvolvimento do ForumWeb.com.br, responsável pelas dicas e downloads do site.

Site do autor: http://www.forumweb.com.br

Indique este artigo

Para

Seu email

Mensagem

Fechar
Personalize sua mensagem

Código

Arquivos relacionados

  • Por enquanto, nenhum arquivo para download.

Habilitando CLR no SQL Server

Terça-Feira, 30 de Março de 2010 às 11:31

Dentre as diversas facilidades existentes no grupo de ferramentas que compõe o SQL Server, duas que se mostram interessante estão relacionadas às questões de integração e extensibilidade.

A principal idéia, que temos ao trabalhar com banco de dados no que trata de integração, é o acesso a dados. Para o acesso a dados encontramos várias ferramentas, como ODBC, OLEDB, ADO.NET e outros “conectores”, onde comandos T-SQL fazem a ponte entre a aplicação e o banco de dados.

Por outro lado, temos a extensibilidade, na qual a integração CLR presente no SQL Server permite criar novas features (como funções, tipos, stored procedures e triggers), onde de forma prática facilita o desenvolvimento de algoritmos complexos no lado do banco de dados.

Também existem outras formas de integração e extensibilidade, mas elas não vêm ao caso no momento.

Para iniciar esta série de posts sobre CLR, vou demonstrar como habilitar a integração CLR no SQL Server e tratar algumas peculiaridades presentes nesta atividade.

Habilitando a integração CLR no SQL Server


Para quem trabalhou e trabalha com o SQL Server 2005, já deve estar acostumado com o Surface Area Configuration, mas como esta ferramenta não existe nas versões pós-2005, vamos aprender como habilitar a integração CLR por meio de script.

Basicamente o script é o seguinte:

sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO


Funcionamento da “sp_configure”


Mas para entender como funciona a “sp_configure”, vamos seguir um processo um pouco diferente. Esta procedure possui duas funcionalidades no SQL Server, a primeira é exibição das configurações da instancia do SQL Server e a segunda é a alteração das configurações.

Caso você execute o comando “EXEC sp_configure” ou simplesmente “sp_configure” você terá como resultado uma consulta de todas as configurações não-avançadas do SQL Server. Mas você pode especificar qual configuração que deseja exibir, detalhando-a como o primeiro argumento desta stored procedure, exemplo:

sp_configure 'clr enabled'
GO


E como resultado:


Repare que temos as seguintes colunas:

  • Name: o nome da configuração propriamente dita.
  • Minimum e Maximum: os valores mínimos e máximos desta configuração.
  • Config_value e Run_value: os valores atuais desta configuração.

Mas como temos dois valores atuais para esta configuração? Para entendermos isso, precisaremos alterar o valor desta configuração, utilizando a mesma stored procedure, mas passando como argumentos o nome da configuração e um valor válido.

sp_configure 'clr enabled'
GO
sp_configure 'clr enabled', 1
GO
sp_configure 'clr enabled'
GO


Como resultado:


Repare que após a execução da procedure de alteração “sp_configure ‘clr enabled’, 1”, o valor da coluna config_value foi alterado para o mesmo valor o argumento da procedure de alteração. Isso quer dizer que após a execução desta procedure de alteração, o SQL Server simplesmente entendeu que as configurações atuais do servidor serão as que você passou como argumente, mas ainda não aplicará aos processos atuais da instância, assim ainda não será possível utilizar a integração CLR.

Para aplicar estas configurações será necessário chamar pós a procedure de alteração o “RECONFIGURE”, adicionando ao exemplo anterior as seguintes linhas:

RECONFIGURE
GO
sp_configure 'clr enabled'
GO


Como resultado, teremos o SQL Server habilitado com a nova configuração.


Sobre os acessos para alterar as configurações


Caso não tenha conseguido configurar a integração CLR, verifique se seu usuário possui permissão “ALTER SETTINGS” ou esta na roles de “sysadmin” ou “serveradmin”. Mesmo que a integração CLR somente pode ser habilitada com as permissões anteriores, lembre-se que caso você dê este nível de acesso a um usuário, você estará dando acesso completo ao SQL Server. Então se for necessário que o usuário utilize desta integração deixe-a previamente configurada.

Sobre a visualização das configurações


Uma das configurações interessantes é a “show advanced option” que permite trabalhar com opções avançadas com a procedure “sp_configure”.

Para visualizar as configurações também é possível utilizar a system view/catalog “sys.configurations”, que possui descrições sobre as configurações.

SELECT * FROM sys.configurations


Forçando configurações não recomendadas


Caso deseje passar um valor não recomendado para alguma das configurações do servidor, é possível chamar “RECONFIGURE WITH OVERRIDE”, mas tome muito cuidado.

Habilitando permissões para UNSAFE e EXTERAL_ACCESS


Caso precise trabalhar com assemblies CLR com opções UNSAFE ou EXTERNAL_ACCESS, será necessário habilitar a configuração “TRUSTWORTHY” do banco de dados.

ALTER DATABASE [MeuBancoDeDados]
SET TRUSTWORTHY ON
GO


Considerações finais


Para esta demonstração estive utilizando o SQL Server 2008 e o Windows 7, mas não encontrei incompatibilidades com o SQL Server 2005 e o SQL Server 2008 R2, assim como com outras versões do Windows suportadas por estas versões do SQL Server.

Fonte: sqlfromhell.com

Qual a sua opinião?

Comente e interaja!



Ainda sem comentários, comente!