当前位置:网站首页>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
边栏推荐
- FatMouse' Trade (Hangdian 1009)
- 部署、收回和删除解决方式—-STSADM和PowerShell「建议收藏」
- 恶魔奶爸 B3 少量泛读,完成两万词汇量+
- C语言多角度帮助你深入理解指针(1. 字符指针2. 数组指针和 指针数组 、数组传参和指针传参3. 函数指针4. 函数指针数组5. 指向函数指针数组的指针6. 回调函数)
- How to choose financial products? Novice doesn't know anything
- Demon daddy A1 speech listening initial challenge
- CodeSonar如何帮助无人机查找软件缺陷?
- I wrote a markdown command line gadget, hoping to improve the efficiency of sending documents by garden friends!
- Awk processing JSON processing
- 95年专注安全这一件事 沃尔沃未来聚焦智能驾驶与电气化领域安全
猜你喜欢
![[C language] advanced pointer --- do you really understand pointer?](/img/ee/79c0646d4f1bfda9543345b9da0f25.png)
[C language] advanced pointer --- do you really understand pointer?

C语言多角度帮助你深入理解指针(1. 字符指针2. 数组指针和 指针数组 、数组传参和指针传参3. 函数指针4. 函数指针数组5. 指向函数指针数组的指针6. 回调函数)

Problems encountered in installing mysql8 for Ubuntu and the detailed installation process

Implement secondary index with Gaussian redis

Ten thousand word summary data storage, three knowledge points

Tensorflow2. How to run under x 1 Code of X

Small guide for rapid formation of manipulator (12): inverse kinematics analysis
SQL注入报错注入函数图文详解

Onespin | solve the problems of hardware Trojan horse and security trust in IC Design
Klocwork code static analysis tool
随机推荐
The difference between NPM uninstall and RM direct deletion
uva 12230 – Crossing Rivers(概率)「建议收藏」
Solve the problem of using uni app mediaerror mediaerror errorcode -5
Tensorflow2. How to run under x 1 Code of X
智能交通焕发勃勃生机,未来会呈现哪些巨变?[通俗易懂]
单词反转实现「建议收藏」
目标:不排斥 yaml 语法。争取快速上手
恶魔奶爸 C
Is it safe to open an account of BOC shares in kainiu in 2022?
Demon daddy B2 breaks through grammar and completes orthodox oral practice
Arlo's troubles
Devil daddy A0 English zero foundation self-improvement Road
万字总结数据存储,三大知识点
What stocks can a new account holder buy? Is the stock trading account safe
浅解ARC中的 __bridge、__bridge_retained和__bridge_transfer
How to meet the dual needs of security and confidentiality of medical devices?
写一下跳表
反诈困境,国有大行如何破局?
私募基金在中国合法吗?安全吗?
Problems encountered in installing mysql8 for Ubuntu and the detailed installation process