• First build XML then cast to NVarchar and add headers, because when processing XML type MSSS treats <xml ..> not as part of data but as a directive specifying following text encoding .

    SELECT CAST(N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--

    SQL Multi Script 1

    SQL Multi Script

    Version:1.1.0.34-->' AS NVARCHAR(MAX))

    + CAST(

    (-- all XML but header

    SELECT

    '2' as '@version',

    (SELECT'List_database' as '@type',

    '1' as '@version',

    (SELECT

    '5' AS '@version',

    'database' AS '@type',

    'master' AS 'name',

    LTRIM(RTRIM(( [Server Name] ))) AS 'server',

    'True' AS 'integratedSecurity',

    15 AS 'connectionTimeout',

    4096 AS 'packetSize',

    'False' AS 'encrypted',

    'True' AS 'selected',

    LTRIM(RTRIM(( [Server Name] ))) AS 'cserver'

    FROM -- moke table

    (values ('server 1'), ('server 2')) RedGateServerList([Server Name])

    FOR XML PATH('value'), TYPE)

    FOR XML PATH('ListdatabaseLists'),TYPE)

    FOR XML PATH('multiScriptApplication')

    ) AS NVARCHAR(MAX));