Escolar Documentos
Profissional Documentos
Cultura Documentos
Vamos trocar o nome da classe para um nome mais adequado e adicionar as refrencias necessrias, alm do cdigo que executar a gravao do arquivo em seu disco. Ficar assim:
using System; using System.IO; //Manipulao de arquivos em disco using Microsoft.SqlServer.Server;//interoperabilidade com o SQL Server /// <summary> /// Classe responsvel pela gravao do arquivo /// Fernando Datorre Abril 2011 /// </summary> public class GravaXml { [Microsoft.SqlServer.Server.SqlProcedure] public static void Escrever(String conteudo, String arquivo) { try { File.WriteAllText(arquivo, conteudo); } catch (Exception ex) { SqlContext.Pipe.Send("Erro ao Gravar o Arquivo " + ex.Message); } } }
Muito bem, nosso trabalho no Visual Studio est pronto, vamos ao SQL server.
SQL SERVER Crie ou use um banco de dados no SQL Server (usarei o 2005). No meu exemplo, tenho um banco simples e uma tabela com 3 campos:
Agora vamos registrar a dll criada anteriormente. Execute o cdigo abaixo para registrar a dll e dar direito de uso:
exec sp_configure 'clr enabled',1 reconfigure go alter database BancoTeste set trustworthy on go use BancoTeste go create assembly TutorialGravarXml from 'D:\Tutorial\TutorialGravarXml\TutorialGravarXml\bin\Debug\TutorialGravarXml.dll' with permission_set = external_access
Agora que a dll foi importada, criaremos uma Stored procedure que nos permitir a execuo dos mtodos da dll: STORED PROCEDURES
--cria a stored procedure que executar a dll create procedure tutorialGravarXml ( --aqui passamos os parmetros do mtodo que criamos @conteudo nvarchar(max), @arquivo nvarchar(255) ) as external name TutorialGravarXml.GravaXml.Escrever
Criaremos agora uma Stored Procedure simples que selecionar os dados da tabela Clientes. Esta procedure gerar o arquivo xml da consulta e passar para a dll executar.
-- =============================================== -- Author: Fernando Datorre -- Create date: 03/05/2011 01:15 -- Description: Lista os clientes, -Gera o arquivo XML e executa a dll -- =============================================== CREATE PROCEDURE ListarClientes AS BEGIN declare @xml nvarchar(max) set @xml = ( select ID, Nome, DataUltimaCompra from Clientes For XML AUTO,ELEMENTS) --indique o arquivo que ser executado, -- o texto xml e o arquivo de sada exec TutorialGravarXml @xml,'C:\Temp\Clientes.xml' END
TRIGGER Para finalizar, vamos criar uma trigger que executar nossa procedure e gravar o arquivo xml:
-- ====================================================== -- Author: Fernando Datorre -- Create date: 03/05/2011 01:122 -- Description: triger que disparada quando a -tabela clientes sofre uma incluso -ou alterao. ela executa a procedure -que executa a dll para gravar o arquivo -- ====================================================== CREATE TRIGGER [dbo].[TRGerarXmlClientes] ON [dbo].[Clientes] FOR INSERT, UPDATE, DELETE as exec ListarClientes GO
Pronto! Nossos passoas terminaram. Agora reallizar os testes: Nossa pasta C:\temp inicialmente:
Contedo:
Bem, por hora s. claro que fiz um exemplo simples, mas tentei mostrar como podemos explorar as integraes entre as ferramentas e economizar muito trabalho em determinados projetos. Espero que seja til. Abraos e at a prxima. Fernando Datorre Microsoft .Net C# Architect Simple Software Consultoria http://datorre.posterous.com/ "Se voc no luta pelo que quer, no merece o que deseja."