Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exportar banco de dados SQL Server para otimização XML


Vamos considerar um exemplo para gerar um XML:
CREATE PROC GenerateXMLproc

AS

SELECT [Name], ProductNumber, Color

FROM dbo.Product

FOR XML raw(‘Product’), elements, root(‘Products’)

Agora vamos discutir as opções mencionadas acima para salvar esses dados XML:
  1. Usando o procedimento armazenado CLR: Neste método, podemos criar um procedimento armazenado CLR que levará os dados XML gerados, o nome do arquivo e a localização do arquivo como parâmetros de entrada. E então ele pode processar esse XML de acordo com os requisitos e salvar esse arquivo XML no local desejado.

Criando procedimento armazenado CLR:
[Microsoft.SqlServer.Server.SqlProcedure]

public static void SaveXMLOutput(SqlXml XmlData, SqlString Filename)

{

             //Save the XML data being passed to the SP to a file location

      //specify the name of the file suppiled to the SP

      XmlDocument xmlDoc = new XmlDocument();

      SqlPipe output = SqlContext.Pipe;

      xmlDoc.LoadXml(XmlData.Value);

      xmlDoc.Save(Filename.Value);

}
CREATE ASSEMBLY SaveXMLOutputAssembly

from ‘C:\Temp\SaveXMLOutput.dll’

WITH PERMISSION_SET = EXTERNAL_ACCESS

Criando procedimento armazenado a partir da DLL/Assembly importada:
CREATE PROCEDURE SaveXMLOutput

@xmldata XML,

@filename nvarchar(1024)

AS

EXTERNAL NAME SaveXMLOutputAssembly.[XMLOutput].SaveXMLOutput
execute SaveXMLOutput ‘Pass the XML Data generated from other SP’

,‘ C:\Temp\MyXML.xml’