VB.NET - Gerando Stored Procedures no SQL Server 2005 com código gerenciado (CLR)


O CLR - Common Language Runtime - é o ambiente de execução do .NET T Framework, ele é responsável pelo gerenciamento da execução das aplicações, assim todo o código que ele gerencia é chamado de código gerenciado e todo o código que é executado diretamente sobre o sistema operacional é chamado código não gerenciado.

No processo de compilação de código escrito em qualquer linguagem .NET, são gerados artefatos denominados assemblies (DLLs ou EXEs), expressos em uma linguagem intermediária independente de hardware, a Microsoft Intermediate Language (MSIL). Neste momento o CLR usa um compilador de MSIL para o hardware em questão , é o que conhecemos por compilação just-in-time (JIT).

Para permitir a execução de código .NET no SQL Server 2005 foi realizada uma integração dos recursos do SQL e do CLR, e então o SQL Server passou a oferecer, como alternativa ao Transact-SQL e as extended stored procedures, o  SQLCLR que é um poderoso recurso que tem a tendência de se consolidar.

Desta forma o SQL Server na versão 2005, de modo integrado ao Visual Studio 2005, pode desenvolver código de stored procedures, triggers, user defined functions, user defined aggregates e user defined data types, usando linguagens que sigam a Common Language Specification (CLS), como C# e VB.NET. Isso é possível por meio do SQLCLR, resultado da integração entre o SQL e a Common Language Runtime (CLR).

Conclusão: Através da integração do CLR com o SQL Server 2005 podemos escrever código C# ou VB .NET que pode ser usado no interior dos processos do SQL Server escrevendo-os como código gerenciado. No SQL Server muitas tarefas realizadas até o momento usando T-SQL são suportadas usando código gerenciado:

Para poder usar o código gerenciado no SQL Server 2005 são necessários 3 etapas:

  1. Você precisa escrever o código e compilá-lo em um assembly;
  2. Você precisa instalar as assemblies no SQL Server 2005;
  3. Você precisa usar instruções DDL para ligar o código gerenciado com os objetos nomeados(Stored Procedures, Functions,...)

A melhor forma para escrever o código gerenciado é o Visual Studio 2005.(Não dá para usar o Visual Basic 2005 Express Edition)

Criando Stored Procedures  através de código gerenciado no SQL Server 2005

Quando você instala o SQL Server 2005 é criado no Visual Studio 2005 um novo tipo de projeto chamado - SQL Server Project.

Abra o VS 2005 e selecione New Project.

Na janela New Project , em Project Types, marque DataBase, e, em Templates , selecione SQL Server Project , informando o nome sqlServerCLR1

Na janela Add DataBase Reference escolha a conexão com o banco de dados Vendas.mdf ,e , se a janela solicitando habilitar o debug na conexão surgir clique no botão Sim;

Nota:

Você pode usar qualquer banco de dados do SQL Server 2005 , sugiro que você use um banco de dados criado no SQL Server 2005.

Para ativar a conexão com o banco de dados clique no botão Add New Reference , informe o nome do servidor e selecione o banco de dados conforme a figura a seguir:

Em seguida na janela Solution Explorer , clique com o botão direito do mouse sobre o projeto e selecione a opção Add -> Stored Procedure

Na janela Add New Item selecione o Template Stored Procedures e informe o nome sp_exibeProdutos.vb;

O Visual Studio irá criar a estrutura de código mostrada na figura abaixo.

Vamos incluir o código conforme mostrado a seguir:

A primeira vista estamos efetuando um SELECT na tabela Categories do banco de dados Northwind.mdf, mas existem alguns comandos como : SQLPipe, SqlContext, pipe.send com os quais você pode não estar familiarizado.

  • O objeto SqlContext pode ser usado para obter o contexto para o código que esta executando um comando no SQL Server. Pode também ser usado para obter um objeto WindowsIdentity que representa a identidade Windows do cliente chamador.
  • A classe SqlPipe envia mensagens, dados tabulares ou erros ocorram durante a execução para o cliente.

O SQL Server possui uma conexão chamada “context connection”, que permite que sejam executadas instruções Transact-SQL no mesmo contexto no qual o  código foi chamado.

O objeto SQLPipe permite que no código CLR seja possível retornar o conteúdo para quem chamou; isto feito através do método Send que envia um datareader. Será então retornado um objeto do tipo DataReader contendo o resultado da consulta no banco de dados Vendas.mdf.

Nota: Você pode ter que habilitar o CLR com o seu SQL Server rodando a seguinte instrução:

sp_configure 'clr enabled',1;
GO
RECONFIGURE;
GO

Agora na janela Solution Explorer clique com o botão direito sobre o projeto e selecione Deploy

Agora já podemos abrir o Management Studio e visualizar a stored procedure  sp_exibeProdutos criada no banco de dados Vendas.mdf. Veja abaixo:

Na figura acima estamos executando a stored procedure sp_exibeProdutos criada e verificando o seu retorno. Veja que funcionou.

Você pode obter o mesmo resultado sem usar um DataReader. Vamos criar outra stored procedure no projeto.

Na janela Solution Explorer , clique com o botão direito do mouse sobre o projeto e selecione a opção Add -> Stored Procedure

Informe o nome sp_Produtos e digite o código abaixo para essa stored procedure;

Note que neste código estou apenas enviando um comando contra o banco de dados usando a stored procedure.

Efetue o Deploy do projeto e abra o Management Studio.  Executando a stored procedure sp_Produtos veremos o mesmo resultado:

Percebeu como é simples criar objetos para o SQL Server 2005 usando o código gerenciado no Visual Studio 2005.

Tudo isso graças a integração do SQL e do CLR : SQLCLR.

Eu sei, é apenas .NET, mas eu gosto...

Jo 5:24 Em verdade, em verdade vos digo que quem ouve a minha palavra, e crê naquele que me enviou, tem a vida eterna e não entra em juízo, mas já passou da morte para a vida.

João 5:25 Em verdade, em verdade vos digo que vem a hora, e agora é, em que os mortos ouvirão a voz do Filho de Deus, e os que a ouvirem viverão.

João 5:26 Pois assim como o Pai tem vida em si mesmo, assim também deu ao Filho ter vida em si mesmos;

João 5:27 e deu-lhe autoridade para julgar, porque é o Filho do homem.

 

Veja os Destaques e novidades do SUPER DVD VB  (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C#  com exclusivo material de suporte e vídeo aulas com curso básico sobre C#.

      Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti