Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Létrehoz egy Bővített események munkamenetet, amely azonosítja a gyűjtendő eseményeket, az esemény-munkamenet céljait és az esemény-munkamenet beállításait.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE EVENT SESSION event_session_name
ON { SERVER | DATABASE }
{
<event_definition> [ , ...n ]
[ <event_target_definition> [ , ...n ] ]
[ WITH ( <event_session_options> [ , ...n ] ) ]
}
;
<event_definition>::=
{
ADD EVENT [event_module_guid].event_package_name.event_name
[ ( {
[ SET { event_customizable_attribute = <value> [ , ...n ] } ]
[ ACTION ( { [event_module_guid].event_package_name.action_name [ , ...n ] } ) ]
[ WHERE <predicate_expression> ]
} ) ]
}
<predicate_expression> ::=
{
[ NOT ] <predicate_factor> | { ( <predicate_expression> ) }
[ { AND | OR } [ NOT ] { <predicate_factor> | ( <predicate_expression> ) } ]
[ , ...n ]
}
<predicate_factor>::=
{
<predicate_leaf> | ( <predicate_expression> )
}
<predicate_leaf>::=
{
<predicate_source_declaration> { = | < > | != | > | >= | < | <= } <value>
| [event_module_guid].event_package_name.predicate_compare_name ( <predicate_source_declaration> , <value> )
}
<predicate_source_declaration>::=
{
event_field_name | ( [event_module_guid].event_package_name.predicate_source_name )
}
<value>::=
{
number | 'string'
}
<event_target_definition>::=
{
ADD TARGET [event_module_guid].event_package_name.target_name
[ ( SET { target_parameter_name = <value> [ , ...n ] } ) ]
}
<event_session_options>::=
{
[ MAX_MEMORY = size [ KB | MB ] ]
[ [ , ] EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS } ]
[ [ , ] MAX_DISPATCH_LATENCY = { seconds SECONDS | INFINITE } ]
[ [ , ] MAX_EVENT_SIZE = size [ KB | MB ] ]
[ [ , ] MEMORY_PARTITION_MODE = { NONE | PER_NODE | PER_CPU } ]
[ [ , ] TRACK_CAUSALITY = { ON | OFF } ]
[ [ , ] STARTUP_STATE = { ON | OFF } ]
[ [ , ] MAX_DURATION = { <time duration> { SECONDS | MINUTES | HOURS | DAYS } | UNLIMITED } ]
}
Arguments
event_session_name
Az esemény munkamenetének felhasználó által definiált neve. event_session_name alfanumerikus, legfeljebb 128 karakter hosszúságú lehet, egyedinek kell lennie az SQL Server egy példányán belül, és meg kell felelnie az adatbázis-azonosítókra vonatkozó szabályoknak.
ON { SZERVER | ADATBÁZIS }
Meghatározza, hogy az esemény munkamenete a kiszolgáló vagy az adatbázis környezetében van-e.
Azure SQL Database és SQL adatbázis a Microsoft Fabric-ben igényelnek DATABASE.
ESEMÉNY HOZZÁADÁSA [event_module_guid]. event_package_name. event_name
Az esemény munkamenethez társítandó esemény, ahol:
- event_module_guid az eseményt tartalmazó modul GUID azonosítója.
- event_package_name az eseményt tartalmazó csomag.
- event_name az esemény neve.
Az elérhető események a következő lekérdezés végrehajtásával érhetők el:
SELECT o.name AS event_name,
o.description AS event_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
ORDER BY event_name ASC;
SET { event_customizable_attribute = <érték> [ ,... n ] }
Testre szabható attribútumok az eseményhez.
Egy adott esemény testre szabható attribútumai az alábbi lekérdezés végrehajtásával találhatók:
SELECT object_name,
name AS column_name,
type_name,
column_value,
description
FROM sys.dm_xe_object_columns
WHERE object_name = 'event-name-placeholder'
AND column_type = 'customizable'
ORDER BY column_name ASC;
ACTION ( { [event_module_guid].event_package_name. action_name [ ,... n ] })
Az eseményhez társítandó művelet, ahol:
- event_module_guid a műveletet tartalmazó modul GUID azonosítója.
- event_package_name a műveletet tartalmazó csomag.
- action_name a művelet neve.
Az elérhető műveletek a következő lekérdezés végrehajtásával érhetők el:
SELECT o.name AS action_name,
o.description AS action_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'action'
ORDER BY action_name ASC;
HOL <predicate_expression>
Megadja az esemény feldolgozásának meghatározásához használt predikátumkifejezést. Ha <predicate_expression> igaz, az eseményt a munkamenet műveletei és céljai tovább dolgozzák fel. Ha <predicate_expression> hamis, az esemény el lesz dobva, elkerülve a további műveleteket és a célfeldolgozást. Minden predikátumkifejezés legfeljebb 3000 karakter hosszúságú lehet.
event_field_name
A predikátum forrását azonosító eseménymező neve.
Az esemény mezői a következő lekérdezés végrehajtásával találhatók:
SELECT oc.name AS field_name,
oc.type_name AS field_type,
oc.description AS field_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
INNER JOIN sys.dm_xe_object_columns AS oc
ON o.name = oc.object_name
AND
o.package_guid = oc.object_package_guid
WHERE o.object_type = 'event'
AND
o.name = 'event-name-placeholder'
AND
oc.column_type = 'data'
ORDER BY field_name ASC;
[event_module_guid]. event_package_name. predicate_source_name
A globális predikátum forrásának neve, ahol:
- event_module_guid az eseményt tartalmazó modul GUID azonosítója.
- event_package_name a predikátum forrásobjektumát tartalmazó csomag.
- predicate_source_name a predikátum forrásának neve.
A predikátumforrások a következő lekérdezés végrehajtásával találhatók:
SELECT o.name AS predicate_source_name,
o.description AS predicate_source_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'pred_source'
ORDER BY predicate_source ASC;
[event_module_guid]. event_package_name. predicate_compare_name
A predikátum-összehasonlító objektum neve, ahol:
- event_module_guid az eseményt tartalmazó modul GUID azonosítója.
- event_package_name a predikátum-összehasonlító objektumot tartalmazó csomag.
- predicate_compare_name a predikátum-összehasonlító neve.
A predikátum-összehasonlítók a következő lekérdezés végrehajtásával találhatók:
SELECT o.name AS predicate_comparator_name,
o.description AS predicate_comparator_description,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'pred_compare'
ORDER BY predicate_comparator ASC;
szám
Bármely numerikus típus, amely 64 bites egész számként jeleníthető meg.
"sztring"
A predikátum-összehasonlító által megkövetelt ANSI- vagy Unicode-sztring. A predikátum-összehasonlító függvényekhez nem történik implicit sztringtípus-átalakítás. Egy váratlan típus értékének átadása hibát eredményez.
TARGET HOZZÁADÁSA [event_module_guid]. event_package_name. target_name
Az esemény munkamenethez társítandó cél, ahol:
- event_module_guid a célmodul GUID azonosítója.
- event_package_name a célcsomag.
- target_name a célnév.
Az elérhető célok a következő lekérdezés végrehajtásával találhatók:
SELECT o.name AS target_name,
o.description AS target_description,
o.capabilities_desc,
p.name AS package_name,
p.description AS package_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON o.package_guid = p.guid
WHERE o.object_type = 'target'
ORDER BY target_name ASC;
Az esemény-munkamenetek nulla, egy vagy több célt tartalmazhatnak. Az esemény-munkamenethez hozzáadott összes célnak eltérőnek kell lennie. Nem adhat hozzá például egy második event_file célértéket egy olyan munkamenethez, amely már rendelkezik célként event_file .
További információkért, beleértve a gyakran használt célokra vonatkozó használati példákat, tekintse meg a Bővített események célokat.
SET { target_parameter_name = <value> [ , ... n ] }
Beállít egy célparamétert.
Az összes célparaméter és leírás megtekintéséhez hajtsa végre a következő lekérdezést, és cserélje le target-name-placeholder a célnévre, például event_file: , ring_buffer, histogramstb.:
SELECT name AS target_parameter_name,
column_value AS default_value,
description
FROM sys.dm_xe_object_columns
WHERE column_type = 'customizable'
AND object_name = 'target-name-placeholder';
Fontos
Ha a gyűrűpuffer-célértéket használja, javasoljuk, hogy a MAX_MEMORYcélparamétert (amely eltér a MAX_MEMORYmunkamenet paraméterétől) 1024 kilobájtra (KB) vagy annál kisebbre állítsa, hogy elkerülje az XML-kimenet esetleges adatcsongását.
A céltípusokról további információt a Bővített események céljai című témakörben talál.
WITH ( <event_session_options> [ ,... n ] )
Megadja az esemény munkamenethez használni kívánt beállításokat.
MAX_MEMORY = méret [ KB | MB ]
Megadja a munkamenethez lefoglalandó memória maximális mennyiségét az eseménypuffereléshez. Az alapértelmezett érték 4 MB. a méret egy egész szám, amely lehet kilobájt (KB) vagy megabájt (MB) érték. A maximális mennyiség nem haladhatja meg a 2 GB-ot (2048 MB). A memóriaértékek GB-tartományban való használata azonban nem ajánlott.
EVENT_RETENTION_MODE = { ALLOW_SINGLE_EVENT_LOSS | ALLOW_MULTIPLE_EVENT_LOSS | NO_EVENT_LOSS }
Megadja az eseményvesztés kezeléséhez használandó eseménymegőrzési módot.
ALLOW_SINGLE_EVENT_LOSS
Egy esemény elveszhet a munkamenetből. Egyetlen esemény csak akkor lesz elvetve, ha az összes eseménypuffer megtelt. Egyetlen esemény elvesztése, ha az eseménypufferek teljesek, minimalizálja a teljesítményre gyakorolt hatást, ugyanakkor minimalizálja a feldolgozott eseménystreamben lévő adatvesztést.
ALLOW_MULTIPLE_EVENT_LOSS
A munkamenetből elveszhetnek a több eseményt tartalmazó teljes eseménypufferek. Az elveszett események száma a munkamenethez lefoglalt memóriamérettől, a memória particionálásától és a pufferben lévő események méretétől függ. Ez a beállítás általában elkerüli a kiszolgáló teljesítményre gyakorolt hatását, ha az eseménypufferek gyorsan megtelnek, de sok esemény elveszhet a munkamenetből.
NO_EVENT_LOSS
Nem engedélyezett eseményvesztés. Ez a beállítás biztosítja, hogy az összes létrehozott esemény megmarad. Ennek a beállításnak a használata arra kényszeríti az eseményeket aktiváló összes tevékenységet, hogy várjon, amíg a hely rendelkezésre áll egy eseménypufferben. A NO_EVENT_LOSS használata észlelhető teljesítményproblémákat okozhat, amíg az esemény munkamenete aktív. Előfordulhat, hogy a felhasználói munkamenetek és a lekérdezések elakadnak, miközben arra várnak, hogy az eseményeket kiürítse a pufferből.
Megjegyzés:
Az eseményfájl célpontjai az Azure SQL Database-ben, SQL adatbázisban a Microsoft Fabric-ben és Azure SQL Managed Instance-ban (az SQL Server 2025 vagy az Always-up-to-dateupdate policy -val) 2024
NO_EVENT_LOSSjúniusától ugyanúgy viselkednek, mintALLOW_SINGLE_EVENT_LOSS. Ha megadjaNO_EVENT_LOSS, a rendszer egy 25665-ös, 10-ös súlyosságú és üzenetetThis target doesn't support the NO_EVENT_LOSS event retention mode. The ALLOW_SINGLE_EVENT_LOSS retention mode is used instead.tartalmazó figyelmeztetést ad vissza, és létrejön a munkamenet.Ez a módosítás elkerüli a kapcsolat időtúllépését, a feladatátvételi késéseket és egyéb problémákat, amelyek csökkenthetik az adatbázisok rendelkezésre állását, ha
NO_EVENT_LOSSaz Azure Blob Storage eseményfájl-céljaival használják.NO_EVENT_LOSStervezik, hogy a jövőbeli Azure SQL Database, SQL Database a Microsoft Fabric-ben és Azure SQL Managed Instance frissítésekben támogatottEVENT_RETENTION_MODEargumentumként eltávolítják. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
MAX_DISPATCH_LATENCY = { másodperc | VÉGTELEN }
Azt az időtartamot adja meg, amellyel az események pufferelhetők a memóriában, mielőtt elküldené őket az esemény munkamenet-célokra. Alapértelmezés szerint ez az érték 30 másodpercre van állítva.
repeta
SECONDSMásodpercek alatt meg kell várni, mielőtt elkezdené kiüríteni a puffereket a célokra. másodperc egész szám. A minimális késési érték 1 másodperc. A 0 azonban a VÉGTELEN késleltetés megadására használható.
VÉGTELEN
A puffereket csak akkor ürítse ki a célokra, ha a pufferek megtelnek, vagy amikor az esemény munkamenete bezárul.
MAX_EVENT_SIZE = méret [ KB | MB ]
Meghatározza az események maximális megengedett méretét. MAX_EVENT_SIZE csak a MAX_MEMORY-nál nagyobb események engedélyezésére kell beállítani; ha MAX_MEMORY értéknél kisebbre állítja, hibát jelez. a méret egy egész szám, amely lehet kilobájt (KB) vagy megabájt (MB) érték. Ha a méret kilobájtban van megadva, a minimális megengedett méret 64 KB. Ha MAX_EVENT_SIZE van beállítva, a MAX_MEMORY mellett két méretpuffer jön létre, és az eseménypuffereléshez használt teljes memória MAX_MEMORY + 2 * MAX_EVENT_SIZE.
MEMORY_PARTITION_MODE = { NINCS | PER_NODE | PER_CPU }
Az eseménypufferek affinitását adja meg. Az egyéb NONE lehetőségek több puffert és nagyobb memóriahasználatot eredményeznek, de elkerülhetik a versengést és javíthatják a nagyobb gépek teljesítményét.
Egyik sem
A rendszer egyetlen pufferkészletet hoz létre az adatbázismotor-példányon belül.
PER_NODE
Minden NUMA-csomóponthoz létrejön egy pufferkészlet.
PER_CPU
Minden processzorhoz létrejön egy pufferkészlet.
TRACK_CAUSALITY = { ON | KI }
Meghatározza, hogy az okozati összefüggés nyomon legyen-e követve. Ha engedélyezve van, az okozati összefüggés lehetővé teszi a különböző kiszolgálókapcsolatok kapcsolódó eseményeinek korrelációját.
STARTUP_STATE = { ON | KI }
Megadja, hogy az ESEMÉNY-munkamenet automatikusan elindul-e az SQL Server indításakor.
Megjegyzés:
Ha STARTUP_STATE = ON, akkor az esemény munkamenete az adatbázismotor leállásakor kezdődik, majd újraindul. Az esemény munkamenetének azonnali elindításához használja a következőt ALTER EVENT SESSION ... ON SERVER STATE = START: .
ON
Az esemény munkamenete indításkor kezdődik.
OFF
Az esemény munkamenete nem indul el indításkor.
MAX_DURATION = { időtartam { MÁSODPERC | PERC | ÓRA | DAYS } | KORLÁTLAN }
Vonatkozik: SQL Server 2025 (17.x)
KORLÁTLAN
Létrehoz egy olyan esemény-munkamenetet, amely a kezdés után határozatlan ideig fut, amíg le nem állítja az
ALTER EVENT SESSION ... STATE = STOPutasítás használatát. Ez az alapértelmezett érték, haMAX_DURATIONnincs megadva.időtartam MÁSODPERC | PERC | ÓRA | NAPOK
Olyan esemény-munkamenetet hoz létre, amely a munkamenet kezdete után automatikusan leáll. A maximális támogatott időtartam 2 147 483 másodperc, vagy 35 792 perc, 596 óra vagy 24 nap.
További információ: Időhöz kötött esemény munkamenetek.
Megjegyzések
Az esemény-munkamenet argumentumairól további információt a Bővített események munkamenetek című témakörben talál.
A logikai operátorok prioritási sorrendje (a NOT legmagasabb), majd a ANDkövetkező OR: .
Permissions
Az SQL Server és az Azure SQL Managed Instance használatához (az CREATE ANY EVENT SESSION SQL Server 2022-ben bevezetve) vagy ALTER ANY EVENT SESSION engedélyre van szükség.
Az Azure SQL Database és SQL adatbázis a Microsoft Fabric-ben megköveteli az adatbázisban található CREATE ANY DATABASE EVENT SESSION engedélyt.
Jótanács
Az SQL Server 2022 részletesebb engedélyeket vezetett be a kiterjesztett eseményekhez. További információ : Blog: Az SQL Server 2022 és az Azure SQL új részletes engedélyei a PoLP betartásának javítása érdekében.
Példák
A. SQL Server- és Azure SQL Managed Instance-példa
Az alábbi példa bemutatja, hogyan hozhat létre esemény-munkamenetet.test_session Ez a példa két eseményt ad hozzá, és a célértéket event_file használja, az egyes fájlok méretét 256 MB-ra korlátozza, a megőrzött fájlok számát pedig 10-re korlátozza.
IF EXISTS (SELECT 1
FROM sys.server_event_sessions
WHERE name = 'test_session')
DROP EVENT SESSION test_session ON SERVER;
CREATE EVENT SESSION test_session ON SERVER
ADD EVENT sqlserver.rpc_starting,
ADD EVENT sqlserver.sql_batch_starting,
ADD EVENT sqlserver.error_reported
ADD TARGET package0.event_file
(
SET filename = N'C:\xe\test_session.xel',
max_file_size = 256,
max_rollover_files = 10
)
WITH (MAX_MEMORY = 4 MB);
B. Azure SQL Database-példák
Útmutatók például: Esemény munkamenet létrehozása event_file-tárolóval az Azure Storage-ban , és esemény-munkamenet létrehozása ring_buffer tárolóval a memóriában.
A példakódok eltérhetnek az Azure SQL Database és a felügyelt SQL-példányok esetében
Az SQL Serverhez írt néhány Transact-SQL kód példájának kis módosításokat kell végrehajtania az Azure SQL Database-ben vagy az SQL Database-ben a Fabricben. Az ilyen példakódok egyik kategóriája olyan katalógusnézeteket tartalmaz, amelyek névelőtagjai az adatbázismotor típusától függően eltérnek:
-
server_- előtag az SQL Serverhez és a felügyelt Azure SQL-példányhoz -
database_- előtag az Azure SQL Database-hez, az SQL Database-hez a Fabricben és a felügyelt SQL-példányhoz
Az Azure SQL Database és az SQL Database in Fabric csak az adatbázis-hatókörű esemény munkameneteket támogatja. Az SQL Server Management Studio (SSMS) támogatja az Azure SQL Database adatbázis-hatókörű esemény-munkameneteit: az Object Explorerben minden adatbázis alatt megjelenik egy adatbázis-hatókörű munkameneteket tartalmazó Bővített események csomópont.
A felügyelt Azure SQL-példány támogatja az adatbázis-hatókörű munkameneteket és a kiszolgálói hatókörű munkameneteket is. Az SSMS teljes mértékben támogatja a felügyelt SQL-példányok kiszolgálóhatókörű munkameneteit: az Object Explorerben minden felügyelt példány felügyeleti mappájában megjelenik egy kiterjesztett eseménycsomópont, amely tartalmazza az összes kiszolgálóhatókörű munkamenetet.
Megjegyzés:
A felügyelt Azure SQL-példányhoz kiszolgálói hatókörű esemény-munkamenetek ajánlottak.
Az adatbázis-hatókörű esemény munkamenetek nem jelennek meg az Object Explorerben az Azure SQL Managed Instance SSMS-ben. Felügyelt SQL-példányokon az adatbázis-hatókörű esemény munkamenetek csak a Transact-SQL-vel kérdezhetők le és kezelhetők.
Illusztrációként az alábbi táblázat felsorolja és összehasonlítja a katalógusnézetek két részhalmazát. Az alhalmazok eltérő névelőtagokkal rendelkeznek, mivel különböző adatbázismotor-típusokat támogatnak.
| Név az SQL Serverben és a felügyelt Azure SQL-példányban | Név az Azure SQL Database-ben, az SQL Database in Fabricben és a felügyelt Azure SQL-példányban |
|---|---|
sys.server_event_session_actionssys.server_event_session_eventssys.server_event_session_fieldssys.server_event_session_targetssys.server_event_sessions |
sys.database_event_session_actionssys.database_event_session_eventssys.database_event_session_fieldssys.database_event_session_targetssys.database_event_sessions |