通过管道将 SQL 传输到文件

发布于 2024-09-17 06:27:30 字数 3861 浏览 1 评论 0原文

知道如何使用从 DbCommand.ExecuteReader() 返回的 DbDataReader 将...的结果通过管道传输

    DECLARE 
        @session_name VARCHAR(200) = 'test_trace'

    SELECT 
        pivoted_data.* 
    FROM 
    ( 
     SELECT MIN(event_name) AS event_name,
         MIN(event_timestamp) AS event_timestamp,
         unique_event_id,
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'cpu'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [cpu],
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'duration'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [duration],
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'object_id'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [object_id],
         CONVERT ( INT, MIN (
             CASE
                 WHEN d_name = 'object_type'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [object_type],
         CONVERT ( DECIMAL(28,0), MIN (
             CASE
                 WHEN d_name = 'reads'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [reads],
         CONVERT ( VARCHAR(MAX), MIN (
             CASE
                 WHEN d_name = 'session_id'
                 AND d_package IS NOT NULL
                 THEN d_value
             END ) ) AS [session_id],
         CONVERT ( INT, MIN (
             CASE
                 WHEN d_name = 'source_database_id'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [source_database_id],
         CAST((SELECT CONVERT ( VARCHAR(MAX), MIN (
             CASE
                 WHEN d_name = 'sql_text'
                 AND d_package IS NOT NULL
                 THEN d_value
             END ) )  AS [processing-instruction(x)] FOR XML PATH('') ) AS XML) AS [sql_text],
         CONVERT ( DECIMAL(28,0), MIN (
             CASE
                 WHEN d_name = 'writes'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [writes]
     FROM
        ( 
            SELECT 
                *, 
                CONVERT(VARCHAR(400), NULL) AS attach_activity_id 
            FROM 
            ( 
                SELECT 
                    event.value('(@name)[1]', 'VARCHAR(400)') as event_name, 
                    event.value('(@timestamp)[1]', 'DATETIME') as event_timestamp, 
                    DENSE_RANK() OVER (ORDER BY event) AS unique_event_id, 
                    n.value('(@name)[1]', 'VARCHAR(400)') AS d_name, 
                    n.value('(@package)[1]', 'VARCHAR(400)') AS d_package, 
                    n.value('((value)[1]/text())[1]', 'VARCHAR(MAX)') AS d_value, 
                    n.value('((text)[1]/text())[1]', 'VARCHAR(MAX)') AS d_text 
                FROM 
                ( 
                    SELECT 
                        ( 
                            SELECT 
                                CONVERT(xml, target_data) 
                            FROM sys.dm_xe_session_targets st 
                            JOIN sys.dm_xe_sessions s ON 
                                s.address = st.event_session_address 
                            WHERE 
                                s.name = @session_name 
                                AND st.target_name = 'ring_buffer' 
                        ) AS [x] 
                    FOR XML PATH(''), TYPE 
                ) AS the_xml(x) 
                CROSS APPLY x.nodes('//event') e (event) 
                CROSS APPLY event.nodes('*') AS q (n) 
            ) AS data_data 
        ) AS activity_data 
        GROUP BY 
            unique_event_id 

) AS pivoted_data; 

到文件吗?

Any idea how to pipe the results of ...

    DECLARE 
        @session_name VARCHAR(200) = 'test_trace'

    SELECT 
        pivoted_data.* 
    FROM 
    ( 
     SELECT MIN(event_name) AS event_name,
         MIN(event_timestamp) AS event_timestamp,
         unique_event_id,
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'cpu'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [cpu],
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'duration'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [duration],
         CONVERT ( BIGINT, MIN (
             CASE
                 WHEN d_name = 'object_id'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [object_id],
         CONVERT ( INT, MIN (
             CASE
                 WHEN d_name = 'object_type'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [object_type],
         CONVERT ( DECIMAL(28,0), MIN (
             CASE
                 WHEN d_name = 'reads'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [reads],
         CONVERT ( VARCHAR(MAX), MIN (
             CASE
                 WHEN d_name = 'session_id'
                 AND d_package IS NOT NULL
                 THEN d_value
             END ) ) AS [session_id],
         CONVERT ( INT, MIN (
             CASE
                 WHEN d_name = 'source_database_id'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [source_database_id],
         CAST((SELECT CONVERT ( VARCHAR(MAX), MIN (
             CASE
                 WHEN d_name = 'sql_text'
                 AND d_package IS NOT NULL
                 THEN d_value
             END ) )  AS [processing-instruction(x)] FOR XML PATH('') ) AS XML) AS [sql_text],
         CONVERT ( DECIMAL(28,0), MIN (
             CASE
                 WHEN d_name = 'writes'
                 AND d_package IS NULL
                 THEN d_value
             END ) ) AS [writes]
     FROM
        ( 
            SELECT 
                *, 
                CONVERT(VARCHAR(400), NULL) AS attach_activity_id 
            FROM 
            ( 
                SELECT 
                    event.value('(@name)[1]', 'VARCHAR(400)') as event_name, 
                    event.value('(@timestamp)[1]', 'DATETIME') as event_timestamp, 
                    DENSE_RANK() OVER (ORDER BY event) AS unique_event_id, 
                    n.value('(@name)[1]', 'VARCHAR(400)') AS d_name, 
                    n.value('(@package)[1]', 'VARCHAR(400)') AS d_package, 
                    n.value('((value)[1]/text())[1]', 'VARCHAR(MAX)') AS d_value, 
                    n.value('((text)[1]/text())[1]', 'VARCHAR(MAX)') AS d_text 
                FROM 
                ( 
                    SELECT 
                        ( 
                            SELECT 
                                CONVERT(xml, target_data) 
                            FROM sys.dm_xe_session_targets st 
                            JOIN sys.dm_xe_sessions s ON 
                                s.address = st.event_session_address 
                            WHERE 
                                s.name = @session_name 
                                AND st.target_name = 'ring_buffer' 
                        ) AS [x] 
                    FOR XML PATH(''), TYPE 
                ) AS the_xml(x) 
                CROSS APPLY x.nodes('//event') e (event) 
                CROSS APPLY event.nodes('*') AS q (n) 
            ) AS data_data 
        ) AS activity_data 
        GROUP BY 
            unique_event_id 

) AS pivoted_data; 

to a file using DbDataReader that is returned from DbCommand.ExecuteReader()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文