Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exporter la base de données SQL Server vers l'optimisation XML

Prenons un exemple pour générer un XML :

CREATE PROC GenerateXMLproc

AS

SELECT [Name], ProductNumber, Color

FROM dbo.Product

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

Nous allons maintenant discuter des options mentionnées ci-dessus pour enregistrer ces données XML :

  1. Utilisation de la procédure stockée CLR : Dans cette méthode, nous pouvons créer une procédure stockée CLR qui prendra les données XML générées, le nom de fichier et l'emplacement du fichier comme paramètres d'entrée. Et ensuite, il peut traiter ce XML selon les exigences et peut enregistrer ce fichier XML à l'emplacement souhaité.

Création d'une procédure stockée 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

Création d'une procédure stockée à partir de la DLL/Assemblage importé :

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’