Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
В этой статье объясняется два набора системных представлений, связанных с расширенными событиями. В статье рассматриваются следующие вопросы:
- Как выполнять
JOINразличные системные представления. - Как извлечь
SELECTопределенные виды информации из системных представлений.
Существует два набора системных представлений для расширенных событий:
Представления каталога
- В этих представлениях хранятся сведения об определении каждого сеанса событий, созданного с помощью CREATE EVENT SESSION (Transact-SQL). Однако в этих представлениях нет никаких данных о том, запускались ли вообще эти сеансы.
- Например, если обозреватель объектов SSMS не определяет сеансы событий, SELECTing из представления
sys.server_event_session_targetsвозвращает нулевые строки.
- Например, если обозреватель объектов SSMS не определяет сеансы событий, SELECTing из представления
- Большинство примеров написаны для SQL Server и Управляемого экземпляра SQL Azure. Но при незначительных изменениях они будут выполняться в базе данных SQL Azure и SQL базе данных в Fabric, изменяя
serverнаdatabaseв имени DMV:-
sys.server_event_session*— это префикс имени в SQL Server и Управляемом экземпляре SQL Azure. -
sys.database_event_session*— это префикс имени в Базе данных SQL Azure и базе данных SQL в Fabric. - Дополнительную информацию о каждом из них см. в расширенных представлениях каталога событий.
-
Динамические административные представления (DMV)
Хранение сведений о текущей активности запущенных сеансов событий. Однако динамические административные представления содержат минимум сведений об определении сеансов.
- Даже если все сеансы событий в настоящее время остановлены, представление, содержащее
SELECT, все равно вернет строки из представленияsys.dm_xe_packages, поскольку различные пакеты загружаются в активную память при запуске сервера. - По той же причине
sys.dm_xe_objectsиsys.dm_xe_object_columnsпо-прежнему возвращают строки.
- Даже если все сеансы событий в настоящее время остановлены, представление, содержащее
Префикс имени для динамических административных представлений расширенных событий:
-
sys.dm_xe_*— это префикс имени в SQL Server и Управляемом экземпляре SQL Azure. -
sys.dm_xe_database_*Как правило, префикс имени в базе данных Azure SQL и базе данных SQL в системе Fabric.
-
Permissions
Для SELECT системных представлений необходимо следующее разрешение:
- ДЛЯ SQL Server 2019 (15.x) и предыдущих версий требуется
VIEW SERVER STATEразрешение на сервере. - ДЛЯ SQL Server 2022 (16.x) и более поздних версий требуется
VIEW SERVER PERFORMANCE STATEразрешение на сервере. - База данных Azure SQL и база данных SQL в Fabric требуют наличия
VIEW DATABASE PERFORMANCE STATEразрешения в базе данных.
Представления каталога
В целях этой страницы создайте сеанс расширенных событий с SSMS или T-SQL. Установите последнюю версию SQL Server Management Studio (SSMS).
Создание сеанса в SQL Server Management Studio (SSMS)
В SSMS, в обозревателе объектов, можно запустить диалоговое окно Создать сеанс, развернув Управление>Расширенные события, а затем щелкните правой кнопкой мыши Сеансы> и выберите Создать сеанс.
В большом диалоговом окне Новый сеанс в его первом разделе Общиебыл выбран параметр Запускать сеанс событий при запуске сервера.
> General, Start the event session at server startup.
Далее в разделе "События мы видим, что lock_deadlock событие было выбрано. Для этого события были выбраны три действия . Это означает, что выбрана кнопка "Настройка ", которая становится серой после выбора.
> Events, Global Fields (Actions).
Далее в разделе"Настройка>" мы видим, что для 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 вместе. Любая из этих небольших инструкций 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]. [счетчик]<=(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 инструкций, каждый из которых служит определенной полезной бизнес-цели. Кроме того, SELECTs демонстрируют, как можно JOIN совместно использовать динамические административные представления для любых новых целей.
Справочная документация по динамическим административным представлениям доступна в динамических административных представлениях расширенных событий
Все объекты, которые можно использовать в области расширенных событий, взяты из пакетов, которые загружены в систему. В этом разделе перечислены все пакеты и даны их описания.
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 |
Расширенные события для FILESTREAM и FileTable в SQL Server |
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= среда CLR .NET -
qds= запрос хранилища данных -
sni= сетевой интерфейс сервера -
ucs= стек унифицированных коммуникаций -
xtp= крайняя обработка транзакций
SELECT все доступные элементы, отсортированные по типу
Следующий 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' - Кроме того, вам необходимо изменить значение условия
WHEREдляo.name =.
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];
Выходные данные
Следующие строки были возвращены предыдущей функцией SELECT, WHERE 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];
Выходные данные
Далее приведена выборка фактических 100+ строк выходных данных из предыдущего T-SQL SELECT. Строка 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' - Кроме того, вам необходимо изменить значение условия
WHEREдляo.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
***/
Приведение столбца target_data в XML-файл с помощью функции DMV SELECT
Эта функция DMV SELECT возвращает строки данных из целевого объекта активной сессии событий. Данные приводятся к XML, что делает возвращаемую ячейку удобной для выбора и отображения в SSMS.
- Если сеанс событий остановлен, он
SELECTвернет нулевые строки. - Необходимо изменить значение
WHEREдля предложенияs.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 FROM (выбор из функции)
Далее приведены строки, возвращаемые предыдущей SELECT FROM функцией. XML-столбец Event-Data-As-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>