MSSQL Select with XML Output
The following query returns a result in XML format. the root1 option (root element) adds a root element named “root element” to the file. The option elements creates elements instead of attributes. The auto option creates standard elements with the table name and column names mapped to elements.
SELECT * FROM [tablename] FOR XML auto, root('rootelement'), elements
Another example with a custum (nested) XML layout…
-- Retrieve instancename and other info from database and place info under element intances.instance... SELECT i.instance AS [Name] , i.edition AS [Edition] , i.patchlevel AS [Patchlevel] -- Retrieve info from database table on key instance_id place info under child element Databases... , ( SELECT d.[database] AS [Name] , d.RecoveryModel AS [RecoveryModel] -- Retrieve ref data from OTAP table... , ( SELECT e.OTAP FROM OTAP e WHERE e.ID_OTAP = d.ID_OTAP ) AS [OTAP] -- Retrieve info from application to which this database belongs... , ( SELECT a.Applicatienaam AS [Name] , a.AuthenticatieModus As [AuthType] FROM applicatie a WHERE a.ID_applicatie = d.ID_applicatie FOR XML PATH ('Application'), Type ) FROM [database] d WHERE d.instance_id = i.instance_id FOR XML PATH ('Database'), Type ) AS [Databases] FROM [dbo].[instances] i FOR XML PATH('Instance'), root('Instances'), Elements
XML Output:
<instances> <instance> <name>SERVER1\INSTANCE</name> <edition>Enterprise Edition</edition> <patchlevel>11.00.8888.00 (SPX)</patchlevel> <databases> <database> <name>Database1</name> <recoverymodel>SIMPLE</recoverymodel> <otap>Production</otap> <applicatie> <name>Application1</name> <authtype>SQL Server</authtype> </applicatie> </database> </databases> </instance> <instance> <name>SERVER2</name> <edition>Enterprise Edition</edition> <patchlevel>11.00.9999.00 (SPX)</patchlevel> <databases> <database> <name>Database2</name> <recoverymodel>FULL</recoverymodel> <otap>Production</otap> <applicatie> <name>Application2</name> <authtype>Windows</authtype> </applicatie> </database> <database> <name>Database3</name> <recoverymodel>FULL</recoverymodel> <otap>Testing</otap> <applicatie> <name>Application2</name> <authtype>Windows</authtype> </applicatie> </database> </databases> </instance> </instances><instances> </instances>