Publicando Assemblies e Funções CLR no SQL Server

Boa noite pessoas!

Com este artigo, vou demonstrar como publicar manualmente no SQL Server as funções que tenham sido desenvolvido em um projeto SQL-CLR. Visto que não foram de tanta utilidade os links que eu enviei para aqueles que me questionaram por email, eu acredito que este artigo ajudará resolver estas necessidades.

Antes de iniciar com a demonstração, é necessário que entendam que o Visual Studio/.NET Framework gera o Assembly CLR (uma DLL, como preferir), que será necessário ser incorporada (referenciado) às outras Assembly já presentes no banco de dados. Antes de incorporar este Assembly, será necessário que seja habilitado o suporte/integração CLR presente no SQL Server (isso é uma configuração que vale para toda a instância do SQL Server e já foi demonstrada no artigo “Habilitando CLR no SQL Server”).

O Assembly é incorporado á um banco de dados e não a toda a instância do SQL Server, desta forma, se quiser utilizar este assembly em outro banco, será necessário incorporar o assembly a este outro banco.

Todas as funcionalidades (stored procedures, funções…) do Assembly deverão ser referenciadas também no banco de dados, pois não são automaticamente criadas quando é incorporado o assembly.

 

Publicando Assemblies CLR no SQL Server

Para publicações manuais, é recomendável optar pela opção “Release”, feito isso, clique na opção build do projeto.

Você poderá encontrar o Assembly CLR do projeto na pasta “bin\Release” do projeto. Para chegar até esta pasta mais rapidamente, você pode clicar com o botão direito sobre o projeto e chamar o item “Open Folder in Windows Explorer”.

 

Na pasta de release, você encontrará o assembly de seu projeto, agora mova este arquivo para uma pasta dentro do servidor de banco de dados.

No SQL Server, precisaremos referenciar o Assembly CLR ao banco de dados. Para executar este procedimento, é possível optar pelo SQL Server Management Studio, onde clicando com o botão direito em “Databases\[Nome do banco de dados]\Programmabiliby\Assemblies”, chamando o item “New Assembly” (conforme a figura abaixo), será aberto o painel de configurações para o novo assembly.

Conforme a figura abaixo, informe o caminho para seu banco de dados e algumas configurações adicionais, que algumas vezes podem ser necessárias.

Ou se preferir, é possivel criar este novo assembly de forma semelhante por código, conforme o exemplo:

CREATE ASSEMBLY [CS_SQL] FROM 'D:\CS_SQL.dll'
WITH PERMISSION_SET = SAFE

Pronto, agora você possui seu assembly dentro de seu banco de dados.

 

Para criar as referencias às funções do Assembly CLR dentro do banco de dados, utilizarei o seguinte exemplo, onde é criada uma função SQL que possui características semelhantes as da função CLR por ela referenciada em EXTERNAL NAME.

CREATE FUNCTION [dbo].[Pitagoras](@ab [float], @bc [float])
RETURNS [float]
AS
EXTERNAL NAME [CS_SQL].[UserDefinedFunctions].[Pitagoras]
GO

Feito isso, basta testar.

SELECT dbo.Pitagoras(3,2) AS Resultado;

 

Para finalizar esta série sobre CLR, no próximo artigo estarei trabalhando outra opção de integração CLR, ainda “unsafe”, mas uma opção interessante para trabalhar com cálculos pesados.

 

Artigos relacionados:

Habilitando CLR no SQL Server:
https://sqlfromhell.wordpress.com/2009/09/19/habilitando-clr/

Criando funções CLR para o SQL Server:
https://sqlfromhell.wordpress.com/2009/09/26/funcoes-clr/

Debug de funções CLR no SQL Server:
https://sqlfromhell.wordpress.com/2009/10/03/debug-clr/

5 pensamentos sobre “Publicando Assemblies e Funções CLR no SQL Server

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

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

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

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

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

Deixe uma resposta

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