Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric Preview
In dit artikel worden de twee sets systeemweergaven uitgelegd die betrekking hebben op uitgebreide gebeurtenissen. Het artikel illustreert:
-
JOINVerschillende systeemweergaven. -
SELECTSpecifieke soorten informatie uit de systeemweergaven.
Er zijn twee sets systeemweergaven voor uitgebreide gebeurtenissen:
Catalogusweergaven
- In deze weergaven wordt informatie opgeslagen over de definitie van elke gebeurtenissessie die is gemaakt door CREATE EVENT SESSION (Transact-SQL). Maar deze weergaven weten niets over of er ooit sessies zijn gestart.
- Als in de SSMS-objectverkenner bijvoorbeeld geen gebeurtenissessies worden gedefinieerd, retourneert SELECTing vanuit de weergave
sys.server_event_session_targetsnul rijen.
- Als in de SSMS-objectverkenner bijvoorbeeld geen gebeurtenissessies worden gedefinieerd, retourneert SELECTing vanuit de weergave
- De meeste voorbeelden zijn geschreven voor SQL Server en Azure SQL Managed Instance. Maar door kleine bewerkingen zouden ze werken in Azure SQL Database en SQL Database in Fabric door de
serverin de naam van de DMV te wijzigen indatabase.-
sys.server_event_session*is het naamvoorvoegsel in SQL Server en Azure SQL Managed Instance. -
sys.database_event_session*is het naamvoorvoegsel in Azure SQL Database en SQL Database in Fabric. - Zie De uitgebreide weergaven van de gebeurteniscatalogus voor meer informatie.
-
Dynamische beheerweergaven (DMVs)
Sla informatie op over de huidige activiteit van actieve gebeurtenissessies. Maar deze DMV's weten weinig over de definitie van sessies.
- Zelfs als alle gebeurtenissessies momenteel zijn gestopt, retourneert een
SELECTvanuit de weergavesys.dm_xe_packagesnog steeds rijen, omdat bij het starten van de server verschillende pakketten in het actieve geheugen worden geladen. - Om dezelfde reden
sys.dm_xe_objectsensys.dm_xe_object_columnsnog steeds rijen retourneren.
- Zelfs als alle gebeurtenissessies momenteel zijn gestopt, retourneert een
Naamvoorvoegsel voor DMVs voor uitgebreide gebeurtenissen is:
-
sys.dm_xe_*is het naamvoorvoegsel in SQL Server en Azure SQL Managed Instance. -
sys.dm_xe_database_*is over het algemeen het naamvoorvoegsel in Azure SQL Database en SQL Database in Fabric.
-
Permissions
Om vanuit SELECT de systeemweergaven te werken, is de volgende machtiging nodig:
- SQL Server 2019 (15.x) en eerdere versies vereisen
VIEW SERVER STATEmachtigingen op de server. - VOOR SQL Server 2022 (16.x) en latere versies is machtiging vereist
VIEW SERVER PERFORMANCE STATEop de server. - Voor Azure SQL Database en SQL Database in Fabric zijn machtigingen in de database vereist
VIEW DATABASE PERFORMANCE STATE.
Catalogusweergaven
Voor deze pagina maakt u een uitgebreide gebeurtenissensessie met SSMS of met T-SQL. Gebruik altijd de nieuwste update van SSMS.
Een sessie maken in SQL Server Management Studio (SSMS)
In SSMS kunt u in objectverkenner het dialoogvenster Nieuwe sessie starten doorUitgebreide beheergebeurtenissen> uit te vouwen en vervolgens met de rechtermuisknop op Sessies>nieuwe sessie te klikken.
In het dialoogvenster Grote Nieuwe sessie , in de eerste sectie met het label Algemeen, zien we dat de optie is geselecteerd om de gebeurtenissessie bij het opstarten van de server te starten.
Vervolgens ziet u in de sectie Gebeurtenissen dat de lock_deadlock gebeurtenis is gekozen. Voor die gebeurtenis zien we dat er drie acties zijn geselecteerd. Dit betekent dat de knop Configureren is geselecteerd, wat grijs wordt nadat deze is geselecteerd.
Vervolgens zien we in de sectie Gebeurtenissen>configureren dat resource_type is ingesteld op PAGE. Dit betekent dat gebeurtenisgegevens niet van de gebeurtenisengine naar het doel worden verzonden als de resource_type waarde niets anders is dan PAGE.
We zien extra predicaatfilters voor de databasenaam en voor een teller.
Vervolgens zien we in de sectie Gegevensopslag dat de event_file als doel is gekozen. Verder zien we dat de optie Bestandsrolover inschakelen is geselecteerd.
Ten slotte zien we in de sectie Geavanceerd dat de waarde voor maximale verzendlatentie is verlaagd tot 4 seconden.
Gebeurtenissessie maken in T-SQL
Ongeacht hoe een gebeurtenissessiedefinitie wordt gemaakt, kan de sessie vanuit SSMS worden omgekeerd in een perfect overeenkomend Transact-SQL script. U kunt de voorgaande schermopnamen van nieuwe sessies bekijken en de bijbehorende zichtbare specificaties vergelijken met de componenten in het volgende gegenereerde T-SQL-script CREATE EVENT SESSION .
Als u een gebeurtenissessie wilt reverse-engineeren, kunt u in Objectverkenner met de rechtermuisknop op het sessieknooppunt klikken en vervolgens Scriptsessie kiezen voor>CREATE ** >Klembord.
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
);
Catalogusweergave SELECT JOIN UNION
De volgende T-SQL-instructie SELECT is alleen lang omdat het meerdere kleine SELECTs samenvat als UNION. Elk van de kleine SELECT's kan zelfstandig worden uitgevoerd. De kleine SELECTs laten zien hoe de verschillende systeemcatalogusweergaven samen JOINed moeten zijn.
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]
;
Uitvoer
In de volgende tabel ziet u de uitvoer van het uitvoeren van de voorgaande SELECT JOIN UNION. De namen en waarden van de uitvoerparameter komen overeen met wat duidelijk zichtbaar is in de voorgaande CREATE EVENT SESSION instructie.
| Sessie-Naam | Zinstype | Parameter-Name | Parameter-Waarde |
|---|---|---|---|
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 [pakket0]. [teller]<=(16)) |
(Not_Applicable) |
event_session_test3 |
5_TARGET | evenement_bestand | (Not_Applicable) |
event_session_test3 |
6_TARGET_SET | filename | c:\temp\event_session_test3_EF.xel |
event_session_test3 |
6_TARGET_SET | max_bestandsgrootte | 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 | opstarttoestand | 1 |
Hiermee wordt de sectie over catalogusweergaven voltooid.
Dynamische beheerweergaven (DMV's)
Deze sectie bevat verschillende Transact-SQL SELECT instructies die elk een specifiek nuttig zakelijk doel dienen. Verder laten de SELECTs zien hoe u de DMV's samen kunt JOIN gebruiken voor elk gewenst gebruik.
Referentiedocumentatie van de DMV's is beschikbaar in Extended Events Dynamische Beheeroverzichten
Alle objecten die u kunt gebruiken in het gebied van uitgebreide gebeurtenissen, zijn afkomstig van pakketten die in het systeem worden geladen. In deze sectie worden alle pakketten en de bijbehorende beschrijvingen vermeld.
SELECT --C.1
p.name AS [Package],
p.description AS [Package-Description]
FROM
sys.dm_xe_packages AS p
ORDER BY
p.name;
Uitvoer
Hier volgt de lijst met pakketten.
| Package | Pakketbeschrijving |
|---|---|
filestream |
Uitgebreide gebeurtenissen voor SQL Server FILESTREAM en FileTable |
package0 |
Standaardpakket. Bevat alle standaardtypen, kaarten, operators, acties en doelen vergelijken |
qds |
Uitgebreide gebeurtenissen voor Query Store |
SecAudit |
Beveiligingscontrolegebeurtenissen |
sqlclr |
Uitgebreide gebeurtenissen voor SQL CLR |
sqlos |
Uitgebreide gebeurtenissen voor SQL-besturingssysteem |
SQLSatellite |
Uitgebreide gebeurtenissen voor SQL Server Machine Learning Services |
sqlserver |
Uitgebreide gebeurtenissen voor Microsoft SQL Server |
sqlsni |
Uitgebreide gebeurtenissen voor Microsoft SQL Server |
ucs |
Uitgebreide gebeurtenissen voor Unified Communications Stack |
XtpCompile |
Uitgebreide gebeurtenissen voor de XTP Compile |
XtpEngine |
Uitgebreide gebeurtenissen voor de XTP Engine |
XtpRuntime |
Uitgebreide gebeurtenissen voor de XTP Runtime |
Definities van de voorgaande initialismen:
-
clr= Common Language Runtime van .NET -
qds= Querygegevensopslag -
sni= Servernetwerkinterface -
ucs= Geïntegreerde Communicatiestack (Unified Communications Stack) -
xtp= Extreme transactieverwerking
SELECTEER alle beschikbare items gesorteerd op type
Het volgende SELECT retourneert één rij voor elk object.
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];
Gegevensvelden die beschikbaar zijn voor uw gebeurtenis
Hieronder worden SELECT alle gegevensvelden geretourneerd die specifiek zijn voor uw gebeurtenistype.
- Let op het
WHEREclausule-item:column_type = 'data'. - U moet ook de
WHEREvoorwaarde aanpassen vooro.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];
Uitvoer
De volgende rijen zijn geretourneerd door de voorgaande SELECT, WHERE o.name = 'lock_deadlock':
- Elke rij vertegenwoordigt een optioneel filter voor de
sqlserver.lock_deadlockgebeurtenis. - De
Column-Descriptionkolom wordt weggelaten uit de volgende weergave. De waarde ervan is vaakNULL. - Dit is de werkelijke uitvoer, met uitzondering van de kolom Beschrijving die vaak
NULLwordt weggelaten. - Deze rijen zijn
WHERE object_type = 'lock_deadlock'.
| Package | Event | Kolom-voor-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 en gebeurtenisvelden
SELECT Hieronder wordt een JOIN toegevoegd aan de sys.dm_xe_map_values weergave.
Het doel van de SELECT is om de vele velden weer te geven waaruit u kunt kiezen voor uw gebeurtenissessie. De gebeurtenisvelden kunnen op twee manieren worden gebruikt:
- Als u wilt kiezen welke veldwaarden naar uw doel worden geschreven voor elke gebeurtenis.
- Om te filteren welke gebeurtenisvoorkomens naar uw doel worden verzonden of welke van uw doel worden onthouden.
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];
Uitvoer
Hierna volgt een steekproef van de werkelijke 100+ rijen met uitvoer van de voorgaande T-SQL SELECT. De rij voor resource_type is relevant voor het predicaatfilter dat in het event_session_test3 voorbeeld elders in dit artikel wordt gebruikt.
/*** 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.
***/
Parameters voor doelen
Hieronder worden SELECT alle parameters voor uw doelobject geretourneerd. Elke parameter wordt getagd om aan te geven of deze verplicht is. De waarden die u aan parameters toewijst, zijn van invloed op het gedrag van het doel.
- Let op het
WHEREclausule-item:object_type = 'customizable'. - U moet ook de
WHEREclausulewaarde vooro.name =bewerken.
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];
Uitvoer
De volgende rijen met parameters zijn een kleine subset van de parameters die door de voorgaande SELECTworden geretourneerd.
/*** 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 kolom omzetten naar XML
Hiermee DMV SELECT worden de gegevensrijen van het doel van uw actieve gebeurtenissessie geretourneerd. De gegevens worden geconverteerd naar XML, waardoor de geretourneerde cel kan worden geselecteerd voor eenvoudige weergave in SSMS.
- Als uw gebeurtenissessie is gestopt, retourneert dit
SELECTnul rijen. - U moet de
WHEREclausulewaarde voors.name =bewerken.
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!>';
Uitvoer, de enige rij, met inbegrip van de XML-cel
Hier is de enige rij die als uitvoer van de voorgaande SELECT is gegenereerd. De kolom XML-Cast bevat een tekenreeks van XML die door SSMS als XML wordt herkend. Daarom begrijpt SSMS dat de XML-Cast cel kan worden geselecteerd.
Voor deze run:
- De
s.name =waarde is ingesteld op een gebeurtenissessie voor decheckpoint_begingebeurtenis. - Het doel was een 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>
Uitvoer, XML wordt mooi weergegeven wanneer de cel is geselecteerd
Wanneer de XML-Cast cel is geselecteerd, wordt de volgende mooie weergave weergegeven.
<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 uit een functie om event_file gegevens op te halen van schijfstation
Stel dat uw gebeurtenissessie enkele gegevens heeft verzameld en later is gestopt. Als uw sessie is gedefinieerd voor het gebruik van het event_file doel, kunt u de gegevens nog steeds ophalen door de functie sys.fn_xe_target_read_fileaan te roepen.
- U moet uw pad en bestandsnaam bewerken in de parameter van de functie-aanroep, voordat u dit
SELECTuitvoert.- Let niet op de extra cijfers die het SQL-systeem insluit in uw werkelijke. XEL-bestandsnamen telkens wanneer u de sessie opnieuw start. Geef gewoon de normale hoofdnaam en extensie op.
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;
Uitvoer, rijen geretourneerd door de SELECT FROM-opdracht van de functie
Vervolgens worden de rijen geretourneerd door de voorgaande SELECT FROM functie. De Event-Data-As-XML XML-kolom bevat de gegevens die specifiek betrekking hebben op de gebeurtenis.
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>
Uitvoer, één XML-cel
Hier volgt de inhoud van de eerste XML-cel, uit de voorgaande geretourneerde rijenset.
<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>