当前位置:网站首页>Actual combat: sqlserver 2008 Extended event XML is converted to standard table format [easy to understand]
Actual combat: sqlserver 2008 Extended event XML is converted to standard table format [easy to understand]
2022-07-07 21:20:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
-- The hypothesis already exists Event Session Delete
IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQuery')
DROP EVENT SESSION MonitorLongQuery ON SERVER
GO
-- establish Extended Event session
CREATE EVENT SESSION MonitorLongQuery ON SERVER
-- add to Event(SQL Completion event )
ADD EVENT sqlserver.sql_statement_completed
(
-- Specify collected Event Information
ACTION
(
sqlserver.database_id,
sqlserver.session_id,
sqlserver.username,
sqlserver.client_hostname,
sqlserver.sql_text,
sqlserver.tsql_stack
)
--Filter Information (CPU Exceed or the whole execution time exceeds 10S)
WHERE sqlserver.sql_statement_completed.cpu> 10000
OR sqlserver.sql_statement_completed.duration> 10000
)
-- Specify collected Event Information storage location ( It can be stored in memory or in files )
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
-- start-up Event Session Capture data
ALTER EVENT SESSION MonitorLongQuery
ON SERVER STATE = START
GO
-- Inquire about
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
- Stop Event Session
ALTER EVENT SESSION MonitorLongQuery
ON SERVER STATE = STOP
GO
-- Delete Event Session
IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='MonitorLongQuery')
DROP EVENT SESSION MonitorLongQuery ON SERVER
GO
------------ take XML Convert to regular table format
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
-- obtain cpu
SET @cpu = @xmlData.query('//data[@name="cpu"]/value').value('(value)[1]',
'INT')
-- obtain database_id
SET @database_id = @xmlData.query('//action[@name="database_id"]/value').value('(value)[1]',
'INT')
-- obtain username
SET @username = @xmlData.query('//action[@name="username"]/value').value('(value)[1]',
'NVARCHAR(100)')
-- obtain hostname
SET @client_hostname = @xmlData.query('//action[@name="client_hostname"]/value').value('(value)[1]',
'NVARCHAR(100)')
-- obtain sql_text
SET @sql_text = @xmlData.query('//action[@name="sql_text"]/value').value('(value)[1]',
'NVARCHAR(MAX)')
-- Start inserting data
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
goPublisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116529.html Link to the original text :https://javaforall.cn
边栏推荐
- 开户必须往账户里面赚钱吗,资金安全吗?
- 开户还得用身份证银行卡安全吗,我是小白不懂
- 【函数递归】简单递归的5个经典例子,你都会吗?
- 私募基金在中國合法嗎?安全嗎?
- sqlHelper的增删改查
- Klocwork code static analysis tool
- FTP steps for downloading files from Huawei CE switches
- UVA 12230 – crossing rivers (probability) "suggested collection"
- awk处理JSON处理
- Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
猜你喜欢
Mysql子查询关键字的使用方式(exists)

C language helps you understand pointers from multiple perspectives (1. Character pointers 2. Array pointers and pointer arrays, array parameter passing and pointer parameter passing 3. Function point

The latest version of codesonar has improved functional security and supports Misra, c++ parsing and visualization
Klocwork 代码静态分析工具

程序猿赚的那点钱算个P啊!

【C语言】指针进阶---指针你真的学懂了吗?
![[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System](/img/76/b725788272ba2dcdf866b28cbcc897.jpg)
[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System
Lex & yacc of Pisa proxy SQL parsing

The little money made by the program ape is a P!

Problems encountered in installing mysql8 for Ubuntu and the detailed installation process
随机推荐
恶魔奶爸 C
What stocks can a new account holder buy? Is the stock trading account safe
Datatable data conversion to entity
使用高斯Redis实现二级索引
权限不足
A brief understanding of the in arc__ bridge、__ bridge_ Retained and__ bridge_ transfer
MySQL storage expression error
Codeforces round 296 (Div. 2) A. playing with paper[easy to understand]
Le capital - investissement est - il légal en Chine? C'est sûr?
Static test tool
智能交通焕发勃勃生机,未来会呈现哪些巨变?[通俗易懂]
AADL inspector fault tree safety analysis module
Introduction to referer and referer policy
Using enumeration to realize English to braille
反诈困境,国有大行如何破局?
H3C s7000/s7500e/10500 series post stack BFD detection configuration method
目标:不排斥 yaml 语法。争取快速上手
特征生成
GridView defines its own time for typesetting "suggestions collection"
私募基金在中国合法吗?安全吗?