Habilitando CLR no SQL Server

Olá pessoas!

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.

Espero que tenham aprendido um pouco mais sobre as configurações do SQL Server, assim como adquirido preparo para os próximos posts sobre SQL-CLR que eu estarei publicando a partir da próxima semana.

Anúncios

11 pensamentos sobre “Habilitando CLR no SQL Server

  1. Paulo, uma dica: coloque como fazer pela maneira gráfica também!
    (SAC – 2005 e Facets – 2008)

    Eu pensei em começar uma série sobre CLR, mas vou esperar seus posts, só para não fazer a mesma coisa. Mas acho que irei abordar um pouco mais voltado pro .NET! Vou fazer umas pesquisas e decobrir sobre qual parte do tema temos carência de material em português!

    Abraço!

    • Blz Zavaschi!

      Depois de terminar os posts sobre CLR e fazer uma introdução ao ADO.NET, voltarei aos tópicos de administração de banco de dados (backup, plano de manutenção, jobs) e business intelligence.

      Na verdade, o que me incentivou a escrever este tópico foi o treinamento de .NET que estou realizando nestas semanas.

      Seria uma boa se você trabalhasse posts de SQL Azure e SQL trabalhando a sua linha de certificação (cte, xml, clr e tuning) até mesmo Oracle.

      Mas não vejo problemas em escrevermos sobre o mesmo assunto, o bom é que poderemos trocar alguns links se fizermos isso e além de complementar um post com um outro, exemplo disso é que não irei nem tocar no assunto de desempenho do CLR e em que situações ele é bom de ser utilizado (coisas que você têm mais domínio do que eu).

  2. Pingback: Criando funções CLR para o SQL Server « Sql From Hell.com

  3. Pingback: Debug de funções CLR no SQL Server « Sql From Hell.com

  4. Pingback: Publicando Assemblies e Funções CLR no SQL Server « Sql From Hell.com

  5. Pingback: WebService e funções CLR no SQL Server « Sql From Hell.com

  6. Pingback: F# no SQL Server « Sql From Hell.com

  7. Pingback: Publicando Assemblies CLR no SQL Server pelo Visual Studio « Sql From Hell.com

  8. Pingback: O que mudou nos projetos SQL CLR do Visual Studio 2010? « Sql From Hell.com

  9. Pingback: Trabalhando com SQL CLR – Resumo « SQL From Hell.com

  10. Pingback: Trabalhando com SQL CLR – Resumo « SQL From Hell.com

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s