适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 预览版中的 SQL 数据库
本文介绍与扩展事件相关的两组系统视图。 本文阐释了:
- 如何
JOIN查看各种系统视图。 - 如何
SELECT从系统视图中提取特定类型的信息。
扩展事件有两组系统视图:
目录视图
- 这些视图存储有关 CREATE EVENT SESSION (Transact-SQL) 创建的每个事件会话的定义的信息。 但是,这些视图不知道曾经是否启动运行了任何会话。
- 例如,如果 SSMS 对象资源管理器 未定义事件会话,则
sys.server_event_session_targets视图中的 SELECTing 将返回零行。
- 例如,如果 SSMS 对象资源管理器 未定义事件会话,则
- 大多数示例都是针对 SQL Server 和 Azure SQL 托管实例编写的。 但是,通过轻微编辑,方法是将 DMV 名称中的
server更改为database,它们可以在 Azure SQL 数据库和 Fabric 中的 SQL 数据库上运行。-
sys.server_event_session*是 SQL Server 和 Azure SQL 托管实例上的名称前缀。 -
sys.database_event_session*是 Fabric 中 Azure SQL 数据库和 SQL 数据库的名称前缀。 - 有关每个视图的详细信息,请参阅 扩展事件目录视图。
-
动态管理视图 (DMV)
用于存储正在运行的事件会话的当前活动信息。 但是这些 DMV 对会话定义知之甚少。
- 即使当前停止了所有事件会话,视图
SELECT中的某个sys.dm_xe_packages会话仍会返回行,因为服务器启动会将各种包加载到活动内存中。 - 出于同样的原因,
sys.dm_xe_objects和sys.dm_xe_object_columns仍然返回行。
- 即使当前停止了所有事件会话,视图
扩展事件的 DMV 的名称前缀为:
-
sys.dm_xe_*是 SQL Server 和 Azure SQL 托管实例上的名称前缀。 -
sys.dm_xe_database_*通常是 Azure SQL 数据库和 Fabric 中 SQL 数据库的名称前缀。
-
Permissions
若要从系统视图中SELECT,需要以下权限:
- SQL Server 2019 (15.x) 和以前的版本需要
VIEW SERVER STATE对服务器具有权限。 - SQL Server 2022 (16.x) 及更高版本需要
VIEW SERVER PERFORMANCE STATE对服务器具有权限。 - Fabric 中的 Azure SQL 数据库和 SQL 数据库需要
VIEW DATABASE PERFORMANCE STATE数据库中的权限。
目录视图
为此页,请使用 SSMS 或 T-SQL创建扩展事件会话。 始终使用 SSMS 的最新更新。
在 SQL Server Management Studio 中创建会话 (SSMS)
在 SSMS 中,在其对象资源管理器中,可以通过展开管理>来启动“新建会话”对话框,然后右键单击“会话>新建会话”。
在“新建会话”的大对话框中标记为“常规”的第一部分中,我们看到已选中选项“在服务器启动时启动事件会话”。
接下来,在“ 事件 ”部分,我们看到 lock_deadlock 已选择该事件。 对于该事件,我们看到已选择三个操作。 这意味着已选择“ 配置 ”按钮,该按钮在被选中后变为灰色。
接下来,在“ 事件>配置 ”部分中,我们看到 resource_type 已设置为 PAGE。 这意味着,如果 resource_type 值不是 PAGE任何其他值,则事件数据将不会从事件引擎发送到目标。
另外我们还看到数据库名称和计数器的谓词筛选器。
接下来在“数据存储”部分中,我们看到已选择 event_file 作为目标。 此外,我们看到已选中“启用文件滚动更新”选项。
最后,在“高级”部分中,我们看到“最大调度滞后时间”的值已减少到 4 秒。
在 T-SQL 中创建事件会话
无论事件会话的定义如何创建,都可以在 SSMS 中通过反向工程将该会话转换为完全一致的 Transact-SQL 脚本。 可以检查前面的 “新建会话” 屏幕截图,并将其可见规范与以下生成的 T-SQL CREATE EVENT SESSION 脚本中的子句进行比较。
若要反向设计事件会话,请在对象资源管理器中右键单击会话节点,然后选择“脚本会话”作为>CREATE>“剪贴板”。
CREATE EVENT SESSION [event_session_test3]
ON SERVER -- Or, if on Azure SQL Database, ON DATABASE.
ADD EVENT sqlserver.lock_deadlock
(
SET
collect_database_name = (1)
ACTION
(
package0.collect_system_time,
package0.event_sequence,
sqlserver.client_hostname
)
WHERE
(
[database_name] = N'InMemTest2'
AND [package0].[counter] <= (16)
AND [resource_type] = (6)
)
)
ADD TARGET package0.event_file
(
SET
filename = N'c:\temp\\event_session_test3_EF.xel',
max_file_size = (20),
max_rollover_files = (2)
)
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 4 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
);
目录视图 SELECT JOIN UNION
以下 T-SQL SELECT 语句很长,只是因为它将多个小型 SELECT 语句通过 UNION 连接在一起。 任何一个小的 SELECT 语句都可以自己运行。 这些小的 SELECT 语句显示如何将各种系统目录视图 JOIN 在一起。
SELECT
s.name AS [Session-Name],
'1_EVENT' AS [Clause-Type],
'Event-Name' AS [Parameter-Name],
e.name AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'2_EVENT_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'3_EVENT_ACTION' AS [Clause-Type],
a.package + '.' + a.name
AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
JOIN sys.server_event_session_actions As a
ON a.event_session_id = s.event_session_id
AND a.event_id = e.event_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'4_EVENT_PREDICATES' AS [Clause-Type],
e.predicate AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_events AS e
ON e.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'5_TARGET' AS [Clause-Type],
t.name AS [Parameter-Name],
'(Not_Applicable)' AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'6_TARGET_SET' AS [Clause-Type],
f.name AS [Parameter-Name],
f.value AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
JOIN sys.server_event_session_targets AS t
ON t.event_session_id = s.event_session_id
JOIN sys.server_event_session_fields As f
ON f.event_session_id = s.event_session_id
AND f.object_id = t.target_id
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_MAX_MEMORY' AS [Clause-Type],
'max_memory' AS [Parameter-Name],
s.max_memory AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
UNION ALL
SELECT
s.name AS [Session-Name],
'7_WITH_STARTUP_STATE' AS [Clause-Type],
'startup_state' AS [Parameter-Name],
s.startup_state AS [Parameter-Value]
FROM
sys.server_event_sessions AS s
WHERE
s.name = 'event_session_test3'
ORDER BY
[Session-Name],
[Clause-Type],
[Parameter-Name]
;
输出
下表显示了运行上述 SELECT JOIN UNION 后的输出。 输出参数名称和值映射到前面 CREATE EVENT SESSION 语句中明显可见的内容。
| Session-Name | Clause-Type | Parameter-Name | Parameter-Value |
|---|---|---|---|
event_session_test3 |
1_EVENT | Event-Name | lock_deadlock |
event_session_test3 |
2_EVENT_SET | collect_database_name | 1 |
event_session_test3 |
3_EVENT_ACTION | sqlserver.client_hostname | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.collect_system_time | (Not_Applicable) |
event_session_test3 |
3_EVENT_ACTION | sqlserver.event_sequence | (Not_Applicable) |
event_session_test3 |
4_EVENT_PREDICATES | ([sqlserver].[equal_i_sql_unicode_string]([database_name], N'InMemTest2') AND [package0].[counter] < = (16)) |
(Not_Applicable) |
event_session_test3 |
5_TARGET | event_file | (Not_Applicable) |
event_session_test3 |
6_TARGET_SET | filename | c:\temp\event_session_test3_EF.xel |
event_session_test3 |
6_TARGET_SET | max_file_size | 20 |
event_session_test3 |
6_TARGET_SET | max_rollover_files | 2 |
event_session_test3 |
7_WITH_MAX_MEMORY | max_memory | 4096 |
event_session_test3 |
7_WITH_STARTUP_STATE | startup_state | 1 |
至此完成了有关目录视图的章节。
动态管理视图 (DMV)
本部分提供了多个 Transact-SQL SELECT 语句,每个语句提供特定的有用业务用途。 此外,SELECT 还展示了如何将 DMV 联合应用于您需要的任何新用途。
扩展事件动态管理视图的参考文档可在此处访问
可以在扩展事件区域中使用的所有对象均来自加载到系统的包。 本节将列出所有包及其说明。
SELECT --C.1
p.name AS [Package],
p.description AS [Package-Description]
FROM
sys.dm_xe_packages AS p
ORDER BY
p.name;
输出
以下是包的列表。
| 程序包 | Package-Description |
|---|---|
filestream |
SQL Server FILESTREAM 和 FileTable 的扩展事件 |
package0 |
默认包。 包含所有标准类型、映射、比较运算符、操作和目标 |
qds |
查询存储的扩展事件 |
SecAudit |
安全审核事件 |
sqlclr |
扩展事件 SQL CLR |
sqlos |
SQL 操作系统的扩展事件 |
SQLSatellite |
SQL Server 机器学习服务的扩展事件 |
sqlserver |
Microsoft SQL Server 的扩展事件 |
sqlsni |
Microsoft SQL Server 的扩展事件 |
ucs |
统一通信堆栈的扩展事件 |
XtpCompile |
XTP 编译的扩展事件 |
XtpEngine |
XTP 引擎的扩展事件 |
XtpRuntime |
XTP 运行时的扩展事件 |
上面出现的缩略词的定义:
-
clr= .NET 的公共语言运行时 -
qds= 查询数据存储 -
sni= 服务器网络接口 -
ucs= 统一通信堆栈 -
xtp= 极限交易处理
按类型排序,选择所有可用项
下面 SELECT 为每个对象返回一行。
SELECT --C.3
o.object_type AS [Type-of-Item],
p.name AS [Package],
o.name AS [Item],
o.description AS [Item-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p ON o.package_guid = p.guid
WHERE
o.object_type IN ('action' , 'target' , 'pred_source')
AND
(
(o.capabilities & 1) = 0
OR
o.capabilities IS NULL
)
ORDER BY
[Type-of-Item],
[Package],
[Item];
可用于活动的数据字段
下面 SELECT 返回事件类型特有的所有数据字段。
- 请注意子
WHERE句项:column_type = 'data'. - 此外,您还需要编辑
o.name =的WHERE子句值。
SELECT -- C.4
p.name AS [Package],
c.object_name AS [Event],
c.name AS [Column-for-Predicate-Data],
c.description AS [Column-Description]
FROM
sys.dm_xe_object_columns AS c
JOIN sys.dm_xe_objects AS o
ON o.name = c.object_name
JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE
c.column_type = 'data'
AND
o.object_type = 'event'
AND
o.name = '\<EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Event],
[Column-for-Predicate-Data];
输出
前面的SELECTWHERE o.name = 'lock_deadlock'返回了以下行:
- 每行表示
sqlserver.lock_deadlock事件的一个可选筛选器。 -
Column-Description列在以下显示中被省略。 其值通常为NULL. - 这是实际输出,但“说明”列通常省略,
NULL除外。 - 这些行是
WHERE object_type = 'lock_deadlock'。
| 程序包 | 事件 | Column-for-Predicate-Data |
|---|---|---|
sqlserver |
lock_deadlock |
associated_object_id |
sqlserver |
lock_deadlock |
database_id |
sqlserver |
lock_deadlock |
database_name |
sqlserver |
lock_deadlock |
deadlock_id |
sqlserver |
lock_deadlock |
duration |
sqlserver |
lock_deadlock |
lockspace_nest_id |
sqlserver |
lock_deadlock |
lockspace_sub_id |
sqlserver |
lock_deadlock |
lockspace_workspace_id |
sqlserver |
lock_deadlock |
mode |
sqlserver |
lock_deadlock |
object_id |
sqlserver |
lock_deadlock |
owner_type |
sqlserver |
lock_deadlock |
resource_0 |
sqlserver |
lock_deadlock |
resource_1 |
sqlserver |
lock_deadlock |
resource_2 |
sqlserver |
lock_deadlock |
resource_description |
sqlserver |
lock_deadlock |
resource_type |
sqlserver |
lock_deadlock |
transaction_id |
sys.dm_xe_map_values和事件字段
以下SELECT包含一个JOIN到sys.dm_xe_map_values视图。
该显示的目的是展示可供事件会话选择的众多字段。SELECT 可采用两种方式使用事件字段:
- 选择将针对每个事件发生的目标写入哪些字段值。
- 筛选要将哪些发生的事件发送到目标和从目标中排除。
SELECT --C.5
dp.name AS [Package],
do.name AS [Object],
do.object_type AS [Object-Type],
'o--c' AS [O--C],
dc.name AS [Column],
dc.type_name AS [Column-Type-Name],
dc.column_type AS [Column-Type],
dc.column_value AS [Column-Value],
'c--m' AS [C--M],
dm.map_value AS [Map-Value],
dm.map_key AS [Map-Key]
FROM sys.dm_xe_objects AS do
JOIN sys.dm_xe_object_columns AS dc
ON dc.object_name = do.name
JOIN sys.dm_xe_map_values AS dm
ON dm.name = dc.type_name
JOIN sys.dm_xe_packages AS dp
ON dp.guid = do.package_guid
WHERE
do.object_type = 'event'
AND
do.name = '\<YOUR-EVENT-NAME-HERE!>' --'lock_deadlock'
ORDER BY
[Package],
[Object],
[Column],
[Map-Value];
输出
以下是上述 T-SQL SELECT的实际输出中超过 100 行的示例。 该行resource_type与本文其他地方event_session_test3示例中使用的谓词筛选相关。
/*** 5 sampled rows from the actual rows returned.
NOTE: 'resource_type' under 'Column'.
Package Object Object-Type O--C Column Column-Type-Name Column-Type Column-Value C--M Map-Value Map-Key
------- ------ ----------- ---- ------ ---------------- ----------- ------------ ---- --------- -------
sqlserver lock_deadlock event o--c CHANNEL etw_channel readonly 2 c--m Operational 4
sqlserver lock_deadlock event o--c KEYWORD keyword_map readonly 16 c--m access_methods 1024
sqlserver lock_deadlock event o--c mode lock_mode data NULL c--m IX 8
sqlserver lock_deadlock event o--c owner_type lock_owner_type data NULL c--m Cursor 2
sqlserver lock_deadlock event o--c resource_type lock_resource_type data NULL c--m PAGE 6
Therefore, on your CREATE EVENT SESSION statement, in its ADD EVENT WHERE clause,
you could put:
WHERE( ... resource_type = 6 ...) -- Meaning: 6 = PAGE.
***/
目标的参数
下面 SELECT 返回目标的每个参数。 每个参数都标记了是否为必选参数。 为参数指定的值将影响目标的行为。
- 请注意
WHERE条款项:object_type = 'customizable'. - 此外,还需要编辑
WHEREo.name =的子句值。
SELECT --C.6
p.name AS [Package],
o.name AS [Target],
c.name AS [Parameter],
c.type_name AS [Parameter-Type],
CASE c.capabilities_desc
WHEN 'mandatory' THEN 'YES_Mandatory'
ELSE 'Not_mandatory'
END AS [IsMandatoryYN],
c.description AS [Parameter-Description]
FROM
sys.dm_xe_objects AS o
JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
LEFT OUTER JOIN sys.dm_xe_object_columns AS c
ON o.name = c.object_name
AND c.column_type = 'customizable' -- !
WHERE
o.object_type = 'target'
AND
o.name LIKE '%' -- Or '\<YOUR-TARGET-NAME-HERE!>'.
ORDER BY
[Package],
[Target],
[IsMandatoryYN] DESC,
[Parameter];
输出
以下参数行是上述 SELECT参数返回的一小部分。
/*** Actual output, all rows, where target name = 'event_file'.
Package Target Parameter Parameter-Type IsMandatoryYN Parameter-Description
------- ------ --------- -------------- ------------- ---------------------
package0 event_file filename unicode_string_ptr YES_Mandatory Specifies the location and file name of the log
package0 event_file increment uint64 Not_mandatory Size in MB to grow the file
package0 event_file lazy_create_blob boolean Not_mandatory Create blob upon publishing of first event buffer, not before.
package0 event_file max_file_size uint64 Not_mandatory Maximum file size in MB
package0 event_file max_rollover_files uint32 Not_mandatory Maximum number of files to retain
package0 event_file metadatafile unicode_string_ptr Not_mandatory Not used
***/
DMV SELECT 将 target_data 列转换为 XML
此 DMV SELECT 从您当前事件会话的目标返回数据行。 数据被转换为 XML 格式,这使其返回的单元格可以选择从而在 SSMS 中轻松显示。
- 如果事件会话已停止,
SELECT将返回零行。 - 您需要编辑
WHEREs.name =的子句值。
SELECT --C.7
s.name,
t.target_name,
CAST(t.target_data AS XML) AS [XML-Cast]
FROM
sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE
s.name = '\<Your-Session-Name-Here!>';
输出,唯一行,包括其 XML 单元格
这是从前面的 SELECT 输出的唯一一行。 该列 XML-Cast 包含一串 XML 字符串,SSMS 识别为 XML。 因此,SSMS 明白它应该使 XML-Cast 单元格可以选择。
对于该运行:
- 将
s.name =值设置为事件checkpoint_begin的会话。 - 目标为 ring_buffer。
name target_name XML-Cast
---- ----------- --------
checkpoint_session_ring_buffer2 ring_buffer <RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104"><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event><event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z"><data name="database_id"><type name="uint32" package="package0" /><value>5</value></data></event></RingBufferTarget>
当选择单元格时,输出美观显示的 XML
选择 XML-Cast 单元格后,将显示以下漂亮的显示。
<RingBufferTarget truncated="0" processingTime="0" totalEventsProcessed="2" eventCount="2" droppedCount="0" memoryUsed="104">
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:23.508Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T01:28:26.975Z">
<data name="database_id">
<type name="uint32" package="package0" />
<value>5</value>
</data>
</event>
</RingBufferTarget>
从函数中使用SELECT语句检索磁盘驱动器中的event_file数据
假设事件会话收集了一些数据,之后停止了。 如果会话定义为使用event_file目标,则仍可以通过调用函数 sys.fn_xe_target_read_file来检索数据。
- 必须先将路径和文件名编辑到函数调用的参数中,然后才能运行此
SELECT代码。- 不用在意每次重新启动会话时 SQL 系统在实际的 XEL 文件名称中嵌入的额外的数字。 只需指定一般的根名称和扩展名。
SELECT --C.8
f.module_guid,
f.package_guid,
f.object_name,
f.file_name,
f.file_offset,
CAST(f.event_data AS XML) AS [Event-Data-As-XML]
FROM
sys.fn_xe_file_target_read_file(
'\<YOUR-PATH-FILE-NAME-ROOT-HERE!>*.xel',
--'c:\temp\\Checkpoint_Begins_ES*.xel', -- Example.
NULL, NULL, NULL
) AS f;
输出,针对函数执行 SELECT 语句返回的行
接下来是之前由函数 SELECT FROM 返回的行。
Event-Data-As-XML XML 列包含专门与事件发生相关的数据。
module_guid package_guid object_name file_name file_offset Event-Data-As-XML
----------- ------------ ----------- --------- ----------- -----------------
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5120 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:14.025Z"><data name="database_id"><value>5</value></data></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_begin c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:17.704Z"><data name="database_id"><value>5</value></data><action name="session_id" package="sqlserver"><value>60</value></action><action name="database_id" package="sqlserver"><value>5</value></action></event>
D5149520-6282-11DE-8A39-0800200C9A66 03FDA7D0-91BA-45F8-9875-8B6DD0B8E9F2 checkpoint_end c:\temp\\Checkpoint_Begins_ES_20160615bb-_0_131125086091700000.xel 5632 <event name="checkpoint_end" package="sqlserver" timestamp="2016-07-09T03:30:17.709Z"><data name="database_id"><value>5</value></data></event>
输出,一个 XML 单元格
以下是前面返回的行集的第一个 XML 单元格的内容。
<event name="checkpoint_begin" package="sqlserver" timestamp="2016-07-09T03:30:14.023Z">
<data name="database_id">
<value>5</value>
</data>
<action name="session_id" package="sqlserver">
<value>60</value>
</action>
<action name="database_id" package="sqlserver">
<value>5</value>
</action>
</event>