--假设已经存在Event Session删除  

IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQuery')
DROP EVENT SESSION MonitorLongQuery ON SERVER
GO --创建Extended Event session CREATE EVENT SESSION MonitorLongQuery ON SERVER
--添加Event(SQL完毕事件)
ADD EVENT sqlserver.sql_statement_completed
(
--指定收集的Event信息
ACTION
(
sqlserver.database_id,
sqlserver.session_id,
sqlserver.username,
sqlserver.client_hostname,
sqlserver.sql_text,
sqlserver.tsql_stack
) --Filter信息(CPU超过或者整个执行时间超过10S) WHERE sqlserver.sql_statement_completed.cpu> 10000
OR sqlserver.sql_statement_completed.duration> 10000
)
--指定收集的Event信息储存位置(能够存储到内存也能够到文件)
ADD TARGET package0.asynchronous_file_target
(
SET FILENAME = N's:\monitor\LogQuery.xet',
METADATAFILE = 'S:\monitor\LongQuery.xem'
)
GO SELECT sessions.name AS SessionName,sevents.package as PackageName,
sevents.name AS EventName,
sevents.predicate, sactions.name AS ActionName, stargets.name AS TargetName
FROM sys.server_event_sessions sessions
INNER JOIN sys.server_event_session_events sevents
ON sessions.event_session_id= sevents.event_session_id
INNER JOIN sys.server_event_session_actions sactions
ON sessions.event_session_id= sactions.event_session_id
INNER JOIN sys.server_event_session_targets stargets
ON sessions.event_session_id= stargets.event_session_id
WHERE sessions.name='MonitorLongQuery'
GO --启动Event Session捕获数据 ALTER EVENT SESSION MonitorLongQuery
ON SERVER STATE = START
GO --查询 SELECT CAST(event_data AS XML) event_data,*
FROM sys.fn_xe_file_target_read_file ('s:\monitor\LogQuery_0_129954478780290000.xet',
's:\monitor\LongQuery_0_129954478780330000.xem',NULL,NULL)
go -停掉Event Session ALTER EVENT SESSION MonitorLongQuery ON SERVER STATE = STOP GO --删除Event Session IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQuery') DROP EVENT SESSION MonitorLongQuery ON SERVER GO ------------将XML转换为常规的表格式
IF EXISTS ( SELECT *
FROM tempdb.dbo.sysobjects
WHERE id = OBJECT_ID(N'tempdb..#MyData')
AND type = 'U' )
DROP TABLE #MyData
go CREATE TABLE #MyData
(
database_id INT NOT NULL ,
username NVARCHAR(100) NOT NULL,
client_hostname NVARCHAR(100) NOT NULL,
sql_text NVARCHAR(MAX) NOT NULL ,
cpu INT NOT NULL
)
go DECLARE @xmlData XML
DECLARE @xmlString NVARCHAR(MAX)
DECLARE @database_id INT
DECLARE @username NVARCHAR(100)
DECLARE @client_hostname NVARCHAR(100)
DECLARE @sql_text NVARCHAR(MAX)
DECLARE @cpu INT DECLARE myCur CURSOR READ_ONLY
FOR
SELECT TOP 200 event_data --CAST(event_data AS XML)
FROM sys.fn_xe_file_target_read_file ('s:\monitor\LogQuery_0_130638808366940000.xet',
's:\monitor\LongQuery_0_130638808366940000.xem',NULL,NULL) OPEN myCur FETCH NEXT FROM myCur INTO @xmlString WHILE @@FETCH_STATUS = 0 BEGIN
BEGIN TRY
SET @xmlData = CAST(@xmlString AS XML)
--set @cpu = 0
--获取cpu
SET @cpu = @xmlData.query('//data[@name="cpu"]/value').value('(value)[1]',
'INT') --获取database_id
SET @database_id = @xmlData.query('//action[@name="database_id"]/value').value('(value)[1]',
'INT')
--获取username
SET @username = @xmlData.query('//action[@name="username"]/value').value('(value)[1]',
'NVARCHAR(100)')
--获取hostname
SET @client_hostname = @xmlData.query('//action[@name="client_hostname"]/value').value('(value)[1]',
'NVARCHAR(100)') --获取sql_text
SET @sql_text = @xmlData.query('//action[@name="sql_text"]/value').value('(value)[1]',
'NVARCHAR(MAX)') --開始插入数据
INSERT #MyData
( database_id,
sql_text,
username,
client_hostname,
cpu )
VALUES ( @database_id, -- database_id - int
@sql_text, -- sql_text - nvarchar(max)
@username,
@client_hostname,
@cpu
)
END TRY
BEGIN CATCH
END CATCH FETCH NEXT FROM myCur INTO @xmlString
END
CLOSE myCur
DEALLOCATE myCur SELECT b.name,a.username,a.client_hostname,a.sql_text,a.cpu FROM #MyData AS a
inner join sys.databases as b
on a.database_id=b.database_id
order by a.cpu desc
go

实战:sqlserver 2008 扩展事件-XML转换为标准的table格式的更多相关文章

  1. mssql sqlserver 如何将一个日期数据转换为"年份-月份"的格式呢?

    摘要: 下文讲述在sqlserver数据库中,将日期数据转换为指定格式的方法分享,如下所示: 实验环境:sqlserver 2008 R2 实现思路: 实现方法1: 使用year函数和month函数获 ...

  2. SQLServer 跟踪 扩展事件(Extended Events) 专家

    http://blog.csdn.net/kk185800961/article/details/49725903

  3. sql 用openxml 将xml转换为数据表Table

    CREATE PROCEDURE up_OpenXml ( @xml XML ) AS BEGIN DECLARE @Pointer INT EXECUTE sp_xml_preparedocumen ...

  4. SQLServer中使用扩展事件获取Session级别的等待信息以及SQLServer 2016中Session级别等待信息的增强

    本文出处:http://www.cnblogs.com/wy123/p/6835939.html 什么是等待 简单说明一下什么是等待:当应用程序对SQL Server发起一个Session请求的时候, ...

  5. [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)

    转自:[CXF REST标准实战系列] 一.JAXB xml与javaBean的转换 文章Points: 1.不认识到犯错,然后得到永久的教训. 2.认识JAXB 3.代码实战 1.不认识到犯错,然后 ...

  6. SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events

    由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心 ...

  7. SQLSERVER2012里的扩展事件初尝试(上)

    SQLSERVER2012里的扩展事件初尝试(上) SQLSERVER2012里的扩展事件初尝试(下) 周未看了这两篇文章: 扩展事件在Denali CTP3里的新UI(一) 扩展事件在Denali ...

  8. 使用SQL Server 扩展事件来创建死锁的时间跟踪

    我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过“Object Explorer”连接 ...

  9. SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事 ...

随机推荐

  1. 页面爬虫(获取其他页面HTML)加载到自己页面

    //前台 <div id="showIframe"></div> $(document).ready(function() { var url = &quo ...

  2. wift - 使用UIScreen类获取屏幕大小尺寸

    UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...

  3. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)

    之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...

  4. Oracle安装配置流程

    Oracle安装流程 第一次自己动手安装oracle,之前对oracle安装配置一窍不通,最后最终弄好.总结下. 1.  安装oracle10gserver端 2.  安装oracle10gclien ...

  5. Swift - 类型嵌套(以扑克牌结构体为例)

    类型嵌套,简单来说实在一个类型中包含另外一个类型.我们拿一副扑克来说明. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 //类 ...

  6. ASP.NET - 获得客户端的 IP 地址

    通常我们都通过下面的代码获得IP: REMOTE_ADDR 说明:访问客户端的 IP 地址. 此项信息用户不可以修改.如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并 ...

  7. 手动配置S2SH三大框架报错(二)

    十二月 08, 2013 9:34:39 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  8. Delphi与Vista提供的UAC控制(1-代表资源编号,24-资源类型为RTMAINIFEST,最后用brcc32编译成资源文件)

    Vista提供的UAC机制,是Vista的新增功能之一.它的主要目的是防止对于操作系统本身的恶意修 改.如果想对于Vista的 系统设置进行改动,必须通过UAC的验 证才能够进行.通过这样的手段,大大 ...

  9. 两道二分coming~

    第一道:poj 1905Expanding Rods 题意:两道墙(距离L)之间架一根棒子,棒子受热会变长,弯曲,长度变化满足公式( s=(1+n*C)*L),求的是弯曲的高度h. 首先来看这个图: ...

  10. HttpWeb服务器之--用OO方式写

    虽然写的不是很好,但 最终解释权以及版权归13东倍所有! package com.web; import java.io.IOException; public class Test { public ...