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 :
- 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’