Betrachten wir ein Beispiel für die Generierung eines XML:
CREATE PROC GenerateXMLproc
AS
SELECT [Name], ProductNumber, Color
FROM dbo.Product
FOR XML raw(‘Product’), elements, root(‘Products’)
Nun besprechen wir die oben genannten Optionen zum Speichern dieser XML-Daten:
- CLR Stored Procedure verwenden: Bei dieser Methode können wir eine gespeicherte CLR-Prozedur erstellen, die die generierten XML-Daten, den Dateinamen und den Speicherort der Datei als Eingabeparameter verwendet. Und dann kann es dieses XML gemäß den Anforderungen verarbeiten und diese XML-Datei am gewünschten Ort speichern.
CLR-gespeicherte Prozedur erstellen:
[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
Erstellen einer gespeicherten Prozedur aus der importierten DLL/Assembly:
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’