Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
In diesem Artikel werden die beiden Systemansichten erläutert, die sich auf erweiterte Ereignisse beziehen. Dieser Artikel beschreibt:
- Wie man verschiedene
JOINSystemansichten verwendet. - Wie man
SELECTbestimmte Arten von Informationen aus den Systemansichten.
Es gibt zwei Sammlungen von Systemsichten für erweiterte Ereignisse:
Katalogansichten
- Diese Ansichten speichern Informationen zur Definition jeder Ereignissitzung, die von CREATE EVENT SESSION (Transact-SQL) erstellt wird. Diese Sichten wissen jedoch nicht, ob eine Sitzung jemals ausgeführt wurde.
- Wenn beispielsweise im SSMS-Objekt-Explorer keine Ereignissitzungen definiert sind, würde SELECTing aus der Ansicht
sys.server_event_session_targetsnull Zeilen zurückgeben.
- Wenn beispielsweise im SSMS-Objekt-Explorer keine Ereignissitzungen definiert sind, würde SELECTing aus der Ansicht
- Die meisten Beispiele werden für SQL Server und azure SQL Managed Instance geschrieben. Mit geringfügigen Bearbeitungen würden sie jedoch in der Azure SQL-Datenbank und der SQL-Datenbank in Fabric ausgeführt, indem sie den
server-DMV-Namen indatabaseFolgendes ändern:-
sys.server_event_session*ist das Namenspräfix für SQL Server und azure SQL Managed Instance. -
sys.database_event_session*ist das Namenspräfix in der Azure SQL-Datenbank und der SQL-Datenbank in Fabric. - Weitere Informationen finden Sie unter "Erweiterte Ereigniskatalogansichten".
-
Dynamische Verwaltungssichten (DMVs)
Speichern Informationen über die aktuelle Aktivität beim Ausführen von Ereignissitzungen. Aber diese DMVs wissen nur wenig über die Definition der Sitzungen.
- Auch wenn alle Ereignissitzungen zurzeit beendet werden, gibt eine
SELECTvon der Ansichtsys.dm_xe_packagesimmer noch Zeilen zurück, da verschiedene Pakete nach einem Serverstart in den aktiven Arbeitsspeicher geladen bleiben. - Aus demselben Grund
sys.dm_xe_objectsundsys.dm_xe_object_columnsimmer noch Zeilen zurückgeben.
- Auch wenn alle Ereignissitzungen zurzeit beendet werden, gibt eine
Namenspräfix für erweiterte Ereignisse DMVs ist:
-
sys.dm_xe_*ist das Namenspräfix für SQL Server und azure SQL Managed Instance. -
sys.dm_xe_database_*ist üblicherweise das Namenspräfix bei Azure SQL-Datenbank und SQL-Datenbank in Fabric.
-
Erlaubnisse
Für den Zugriff von SELECT auf die Systemansichten ist die folgende Berechtigung erforderlich:
- SQL Server 2019 (15.x) und frühere Versionen erfordern
VIEW SERVER STATEberechtigungen auf dem Server. - SQL Server 2022 (16.x) und höhere Versionen erfordern
VIEW SERVER PERFORMANCE STATEberechtigungen auf dem Server. - Azure SQL-Datenbank und SQL-Datenbank in Fabric erfordern
VIEW DATABASE PERFORMANCE STATEBerechtigung in der Datenbank.
Katalogansichten
Erstellen Sie für diese Seite eine Erweiterte Ereignissitzung mit SSMS oder mit T-SQL. Installieren Sie die neueste Version von SQL Server Management Studio (SSMS).
Erstellen einer Sitzung in SQL Server Management Studio (SSMS)
In SSMS können Sie im Objekt-Explorer das Dialogfeld Neue Sitzung starten, indem Sie Verwaltung erweitern, dann > und anschließend mit der rechten Maustaste auf Sitzungen klicken, um Neue Sitzung zu öffnen.
Im großen Dialogfeld New Session (Neue Sitzung) wird im ersten Abschnitt namens General(Allgemein) angezeigt, dass die Option Start the event session at server startup(Ereignissitzung beim Serverstart starten) ausgewählt wurde.
Als Nächstes im Abschnitt "Ereignisse " wird angezeigt, dass das lock_deadlock Ereignis ausgewählt wurde. Drei Actions (Aktionen) wurden für dieses Ereignis ausgewählt. Dies bedeutet, dass die Schaltfläche " Konfigurieren " ausgewählt wurde, die nach der Auswahl grau wird.
Als Nächstes wird im Abschnitt "Ereignisse>Konfigurieren" angezeigt, dass resource_type auf PAGE gesetzt wurde. Dies bedeutet, dass Ereignisdaten nicht vom Ereignismodul an das Ziel gesendet werden, wenn der resource_type Wert etwas anderes ist als PAGE.
Es werden zusätzliche Prädikatfilter für die Datenbank und für einen Leistungsindikator angezeigt.
> Events, Filter Predicate Fields (Actions).
Im Abschnitt Data Storage (Datenspeicher) sehen Sie, dass event_file als Ziel ausgewählt wurde. Darüber hinaus sehen Sie, dass die Option Enable file rollover (Dateirollover aktivieren) ausgewählt wurde.
Schließlich können Sie im Abschnitt Advanced (Erweitert) erkennen, dass der Wert Maximum dispatch latency (Maximale Verteilungslatenzzeit) auf 4 Sekunden reduziert wurde.
Erstellen einer Ereignissitzung in T-SQL
Unabhängig davon, wie eine Ereignissitzungsdefinition erstellt wird, kann die Sitzung von SSMS in ein perfekt passendes Transact-SQL Skript umgewandelt werden. Sie können die vorherigen Screenshots der neuen Sitzung untersuchen und ihre sichtbaren Spezifikationen mit den Klauseln im folgenden generierten T-SQL-Skript CREATE EVENT SESSION vergleichen.
Zum Reverse Engineering einer Ereignissitzung können Sie im Objekt-Explorer mit der rechten Maustaste auf den Sitzungsknoten klicken und dann Skriptsitzung als>CREATE ** >Zwischenablage auswählen.
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
);
Katalogansicht SELECT JOIN UNION
Die folgende T-SQL-Anweisung SELECT ist nur lang, weil sie mehrere kleine SELECTs mit UNION zusammenführt. Jede der kleinen SELECT-Anweisungen kann einzeln ausgeführt werden. Die kleinen SELECT-Anweisungen zeigen an, wie die verschiedenen Katalogsichten des Systems durch JOIN verknüpft werden müssen.
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]
;
Output
Die folgende Tabelle zeigt das Ergebnis der vorherigen Ausführung SELECT JOIN UNION. Die Namen und Werte des Ausgabeparameters entsprechen dem, was in der vorherigen CREATE EVENT SESSION Anweisung deutlich sichtbar ist.
| 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 |
Dadurch ist der Abschnitt über Katalogsichten abgeschlossen.
Dynamische Verwaltungssichten (DMVs)
Dieser Abschnitt enthält mehrere Transact-SQL SELECT Aussagen, die jeweils einem bestimmten nützlichen Geschäftszweck dienen. Darüber hinaus zeigen die SELECTs, wie Sie die DMVs für alle neuen Anwendungsfälle zusammenführen können JOIN.
Referenzdokumentation der DMVs ist bei Extended Events Dynamic Management Views verfügbar
Alle Objekte, die Sie im Bereich erweitere Ereignisse verwenden können, stammen von Paketen, die in Ihr System geladen werden. In diesem Abschnitt werden alle Pakete und deren Beschreibungen aufgeführt.
SELECT --C.1
p.name AS [Package],
p.description AS [Package-Description]
FROM
sys.dm_xe_packages AS p
ORDER BY
p.name;
Output
Hier ist die Liste der Pakete.
| Paket | Paketbeschreibung |
|---|---|
filestream |
Erweiterte Ereignisse für FILESTREAM und FileTable in SQL Server |
package0 |
Standardpaket: Es enthält alle Standardtypen, Zuordnungen, Vergleichsoperatoren, Aktionen und Ziele. |
qds |
Erweiterte Ereignisse für Abfragespeicher |
SecAudit |
Sicherheitsüberwachungsereignisse |
sqlclr |
Erweiterte Ereignisse für SQL CLR |
sqlos |
Erweiterte Ereignisse für SQL-Betriebssystem |
SQLSatellite |
Erweiterte Ereignisse für SQL Server Machine Learning Services |
sqlserver |
Erweiterte Ereignisse für Microsoft SQL Server |
sqlsni |
Erweiterte Ereignisse für Microsoft SQL Server |
ucs |
Erweiterte Ereignisse für Unified Communications-Stapel |
XtpCompile |
Erweiterte Ereignisse für die XTP-Kompilierung |
XtpEngine |
Erweiterte Ereignisse für die XTP-Engine |
XtpRuntime |
Erweiterte Ereignisse für die XTP-Runtime |
Definitionen der vorhergehenden Abkürzungen:
-
clr= Gemeinsame Sprachlaufzeit von .NET -
qds= Abfragedatenspeicher -
sni= Servernetzwerkschnittstelle -
ucs= Einheitlicher Kommunikations-Stack -
xtp= Extreme Transaktionsverarbeitung
Wählen Sie alle verfügbaren Elemente nach Typ sortiert aus.
Im Folgenden SELECT wird eine Zeile für jedes Objekt zurückgegeben.
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];
Für Ihr Ereignis verfügbare Datenfelder
Das folgende SELECT gibt alle Datenfelder zurück, die speziell für Ihren Ereignistyp sind.
- Beachten Sie das
WHEREKlauselelement:column_type = 'data'. - Außerdem müssen Sie den Wert der Klausel
WHEREfüro.name =bearbeiten.
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];
Output
Die folgenden Zeilen wurden von der vorherigen SELECTWHERE o.name = 'lock_deadlock'Zeile zurückgegeben:
- Jede Zeile stellt einen optionalen Filter für das
sqlserver.lock_deadlockEreignis dar. - Die
Column-DescriptionSpalte wird aus der folgenden Anzeige weggelassen. Der Wert ist häufigNULL. - Dies ist die tatsächliche Ausgabe, mit Ausnahme der ausgelassenen Beschreibungsspalte, die häufig
NULList. - Diese Zeilen sind
WHERE object_type = 'lock_deadlock'.
| Paket | Ereignis | 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 und Ereignisfelder
Im Folgenden SELECT finden Sie eine JOIN der sys.dm_xe_map_values Ansicht.
Der Zweck der SELECT-Anzeige besteht darin, die zahlreichen Felder anzuzeigen, aus denen Sie für Ihre Ereignissitzung auswählen können. Die Ereignisfelder können auf zwei Arten verwendet werden:
- Um auszuwählen, welche Feldwerte bei jedem Ereignisvorkommen in Ihr Ziel geschrieben werden.
- Zum Filtern, welche Ereignisvorkommen zu Ihrem Ziel gesendet werden, bzw. davon abgehalten werden.
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];
Output
Als Nächstes wird eine Stichprobe der über 100 tatsächlichen Zeilen der Ausgabe aus dem vorherigen T-SQL-Objekt SELECT gezeigt. In der Zeile für resource_type wird auf die Prädikatfilterung relevant Bezug genommen, die im event_session_test3 Beispiel an anderer Stelle in diesem Artikel verwendet wird.
/*** 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.
***/
Parameter für Ziele
Im Folgenden gibt SELECT alle Parameter für Ihr Zielobjekt zurück. Jeder Parameter ist markiert, um anzuzeigen, ob er verbindlich ist, oder nicht. Die Werte, die Sie Parametern zuweisen, beeinflussen das Verhalten des Ziels.
- Beachten Sie das
WHEREKlauselelement:object_type = 'customizable'. - Außerdem müssen Sie den Wert der Klausel
WHEREfüro.name =bearbeiten.
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];
Output
Die folgenden Parameterzeilen sind eine kleine Teilmenge der Parameter, die vom vorherigen SELECT zurückgegeben werden.
/*** 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 konvertiert die Spalte target_data in XML
Diese DMV SELECT gibt Datenzeilen aus dem Ziel Ihrer aktiven Ereignissitzung zurück. Die Daten werden in XML umgewandelt, wodurch die zurückgegebene Zelle für die einfache Anzeige in SSMS ausgewählt werden kann.
- Wenn Ihre Ereignissitzung gestoppt wird, wird diese
SELECTnull Zeilen zurückgeben. - Sie sollten den Wert der
WHERE-Klausel fürs.name =bearbeiten.
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!>';
Ausgabe der einzelnen Zeile einschließlich der XML-Zelle
Dies ist die einzige Zeile, die aus dem vorhergehenden SELECT ausgegeben wird. Die Spalte XML-Cast enthält eine XML-Zeichenfolge, die SSMS als XML erkennt. Daher versteht SSMS, dass sie die XML-Cast Zelle auswählbar machen sollte.
Für diese Ausführung:
- Der
s.name =Wert wurde in einer Ereignissitzung für dascheckpoint_begin-Ereignis festgelegt. - Das Ziel war 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>
Ausgabe, XML wird ansprechend angezeigt, wenn die Zelle ausgewählt ist
Wenn die XML-Cast Zelle ausgewählt ist, wird die folgende hübsche Anzeige angezeigt.
<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 aus einer Funktion zum Abrufen von event_file Daten vom Laufwerk
Angenommen, Ihre Ereignissitzungen haben Daten erfasst und wurden später beendet. Wenn Ihre Sitzung für die Verwendung des event_file-Ziels definiert wurde, können Sie die Daten trotzdem abrufen, indem Sie die Funktion sys.fn_xe_target_read_fileaufrufen.
- Sie müssen den Pfad und Dateinamen in den Parameter des Funktionsaufrufs einfügen, bevor Sie diesen
SELECTausführen.- Achten Sie nicht auf die zusätzlichen Ziffern, die SQL-System jedes Mal, wenn Sie die Sitzung neu starten, in Ihre tatsächlichen. XEL-Dateinamen einbettet. Geben Sie einfach den normalen Stammnamen und die Erweiterung an.
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;
Ausgabe der Zeilen, wenn die SELECT FROM-Anweisung auf eine Funktion angewendet wird
Als Nächstes werden die Zeilen zurückgegeben, die von der vorhergehenden SELECT FROM Funktion zurückgegeben werden. Die Event-Data-As-XML XML-Spalte enthält die Daten, die sich speziell auf den Ereignisauftritt beziehen.
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>
Ausgabe einer XML-Zelle
Hier wird der Inhalt der ersten XML-Zelle aus dem vorherigen zurückgegebenen Rowset gezeigt.
<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>