当前位置:网站首页>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
边栏推荐
- Jetty:配置连接器[通俗易懂]
- Phoenix JDBC
- Feature generation
- MinGW MinGW-w64 TDM-GCC等工具链之间的差别与联系「建议收藏」
- Codeforces round 296 (Div. 2) A. playing with paper[easy to understand]
- 恶魔奶爸 B1 听力最后壁垒,一鼓作气突破
- SQL注入报错注入函数图文详解
- Can Huatai Securities achieve Commission in case of any accident? Is it safe to open an account
- AADL inspector fault tree safety analysis module
- 解决使用uni-app MediaError MediaError ErrorCode -5
猜你喜欢

Onespin | solve the problems of hardware Trojan horse and security trust in IC Design
Usage of MySQL subquery keywords (exists)

Ubuntu安装mysql8遇到的问题以及详细安装过程

Demon daddy B3 read extensively in a small amount, and completed 20000 vocabulary+
Default constraint and zero fill constraint of MySQL constraint

万字总结数据存储,三大知识点
Lex & yacc of Pisa proxy SQL parsing

CodeSonar如何帮助无人机查找软件缺陷?

使用高斯Redis实现二级索引

Cantata9.0 | new features
随机推荐
Demon daddy A3 stage near normal speed speech flow initial contact
现在网上开户安全么?想知道我现在在南宁,到哪里开户比较好?
权限不足
ISO 26262 - considerations other than requirements based testing
Codeforces 474 F. Ant colony
easyui 日期控件清空值
Écrivez une liste de sauts
What stocks can a new account holder buy? Is the stock trading account safe
SQL injection error report injection function graphic explanation
Intelligent software analysis platform embold
What are the official stock trading apps in the country? Is it safe to use
刚开户的能买什么股票呢?炒股账户安全吗
Using enumeration to realize English to braille
使用高斯Redis实现二级索引
A brief understanding of the in arc__ bridge、__ bridge_ Retained and__ bridge_ transfer
Deadlock conditions and preventive treatment [easy to understand]
Tensorflow2. How to run under x 1 Code of X
Codeforces 474 F. Ant colony
Numerical method for solving optimal control problem (0) -- Definition
Codesonar enhances software reliability through innovative static analysis