1

@HABO 给了我这个片段:

select * 
from sys.dm_exec_connections as EC inner join
sys.dm_exec_sessions as ES on ES.session_id= EC.session_id
where EC.session_id = @@SPID

我想将所有字段组合到一个 nvarchar 中,我可以放入一个日志表

喜欢

field1: value1 (+chr(13)+chr(10)+)
field2: value2
...
fieldn: valuen

无需手动输入所有字段名和演员表

4

1 回答 1

4

您可以FOR XML PATH('')在查询末尾追加,您将获得一个大 XML 字符串的结果。之后,您可以使用 XML 解析来拆分它。请参阅有关FOR XML PATH 子句的文档与解析输出相关的 StackOverflow 问题

下面是一些产生你想要的输出的示例 T-SQL:

declare @xmlblock xml
select @xmlblock = (
    select
        * 
    from
        sys.dm_exec_connections as EC inner join
        sys.dm_exec_sessions as ES on ES.session_id= EC.session_id
    where
        EC.session_id = @@SPID
    for xml path('')
    )

declare @logline nvarchar(max) set @logline = '' select @logline = @logline + XmlChanges.value('local-name(.)', 'nvarchar(max)') + ': ' + XmlChanges.value('.', 'nvarchar(max)') + char(13) + char(10) from @xmlblock.nodes('/*') as Nodes(XmlChanges)

select @logline

输出看起来像:

session_id: 52
most_recent_session_id: 52
connect_time: 2013-06-12T15:05:48.607
net_transport: TCP
protocol_type: TSQL
...
于 2013-06-12T21:42:51.633 回答