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
A bővített események egy egyszerű teljesítményfigyelési funkció, amellyel a felhasználók adatokat gyűjtenek a problémák monitorozásához és hibaelhárításához. A kiterjesztett események használatával megtekintheti az adatbázismotor belső műveleteinek részleteit, amelyek a teljesítményfigyelés és a hibaelhárítás szempontjából relevánsak. A kiterjesztett eseményekről további információt a Bővített események áttekintése című témakörben talál.
A cikk célja, hogy segítsen az SQL-rendszergazdáknak, mérnököknek és fejlesztőknek, akik még nem ismerik a kiterjesztett eseményeket, és akik szeretnék használni, és néhány perc alatt látni szeretnék az eseményadatokat.
A kiterjesztett eseményeket XEvents-nek is nevezik, néha csak XE-nek.
A cikk elolvasása után a következőt teheti:
- Megtudhatja, hogyan hozhat létre esemény-munkamenetet az SQL Server Management Studióban (SSMS) példa képernyőképekkel.
- A képernyőképek korrelálása egyenértékű Transact-SQL utasításokkal.
- Ismerje meg részletesen az SSMS felhasználói felületének és az XEvents T-SQL-utasítások mögötti kifejezéseket és fogalmakat.
- Megtudhatja, hogyan tesztelheti az esemény munkamenetét.
- A munkamenet eredményeinek ismertetése, beleértve a következőket:
- Elérhető lehetőségek az eredménytárolóhoz
- Feldolgozott és nyers eredmények
- Eszközök az eredmények különböző módon és különböző időskálákon való megtekintéséhez
- Megtudhatja, hogyan keresheti meg és fedezheti fel az összes elérhető eseményt.
- Ismerje meg a Kiterjesztett események rendszernézetek közötti kapcsolatokat.
Jótanács
További információ az Azure SQL Database kiterjesztett eseményeiről, beleértve a kódmintákat is, lásd: Bővített események az Azure SQL Database-ben és a felügyelt Azure SQL-példányban.
Előfeltételek
Az első lépésekhez a következőkre van szükség:
- Telepítse az SQL Server Management Studio (SSMS) legújabb verzióját.
- Győződjön meg arról, hogy a fiókja rendelkezik
CREATE ANY EVENT SESSION(az SQL Server 2022-ben bevezetett) vagyALTER ANY EVENT SESSIONkiszolgálói engedéllyel. - Emellett az SSMS használatakor és a létrehozott munkamenetek megtekintéséhez a bejelentkezéshez engedély
VIEW SERVER PERFORMANCE STATEszükséges. - Az Azure SQL Database, az Azure SQL Managed Instance és az SQL Database in Fabric esetében a kiterjesztett események eseményfájljai az Azure Storage-ban vannak tárolva. Szüksége lesz egy Azure Storage-fiókra.
A kiterjesztett eseményekkel kapcsolatos biztonsági és engedélyekkel kapcsolatos részletek a jelen cikk végén, a függelékben érhetők el.
Bővített események az SSMS-ben
Az SSMS egy teljesen működőképes felhasználói felületet (UI) biztosít a kiterjesztett eseményekhez. Ezzel a felhasználói felülettel számos forgatókönyv valósítható meg T-SQL- vagy dinamikus felügyeleti nézetek (DMV-k) használata nélkül.
A következő szakaszban megtekintheti a kiterjesztett események munkamenetének létrehozásához és a jelentések adatainak megtekintéséhez szükséges felhasználói felületi lépéseket. A jelen cikkben ismertetett lépések elvégzése vagy áttekintése után a lépésekben szereplő fogalmakat részletesebben is megismerheti.
Esemény-munkamenet létrehozása az SSMS-ben
Kiterjesztett események munkamenetének létrehozásakor a rendszernek a következőt kell elmondania:
- Mely események érdeklik.
- Hogyan szeretné, hogy a rendszer jelentse önnek az adatokat.
A bemutató megnyitja az Új munkamenet párbeszédpanelt, amely a következő nevű négy oldal használatát mutatja be:
- General
- Events
- Adattár
- Speciális
A szöveg és a támogató képernyőképek kissé eltérhetnek az SSMS verziójától, de az alapfogalmak magyarázatához továbbra is relevánsnak kell lenniük.
Csatlakozás adatbázismotor-példányhoz. A kiterjesztett események az SQL Server 2014 -től (12.x) kezdve támogatottak az Azure SQL Database-ben és a felügyelt Azure SQL-példányban.
Az Object Explorerben válassza a Bővített események kezelése lehetőséget>. Az Azure SQL Database-ben az esemény-munkamenetek adatbázis-hatókörrel vannak elosztva, így a Kiterjesztett események lehetőség az egyes adatbázisokban található, nem pedig a Felügyelet alatt.
Kattintson a jobb gombbal a Munkamenetek mappára, és válassza az Új munkamenet...lehetőséget. Az Új munkamenet... párbeszédpanel előnyösebb az Új munkamenet varázslóhoz, bár a kettő hasonló.
Jótanács
Ezekben az oktatóanyagi lépésekben ne nyomja le az OK billentyűt , amíg mind a négy oldalon ( Általános, Események, Adattárolás és Speciális) nem haladt végig.
Válassza az Általános lapot. Ezután írja be a
YourSession, vagy bármilyen kívánt nevet, a munkamenetnév szövegmezőbe. Még ne válassza az OK gombot , mert a többi oldalon is meg kell adnia néhány adatot.Válassza az Események lapot.
Az Eseménytár területén, a legördülő listában válassza csak az Eseménynevek lehetőséget.
- Írja be
sql_statementa szövegmezőbe. Ez szűri a listát, hogy csak a névvel rendelkezősql_statementesemények jelenjenek meg. - Görgessen, és válassza ki a nevesített eseményt
sql_statement_completed. - A jobb nyíl gombra
>kattintva áthelyezheti az eseményt a Kijelölt események mezőbe.
- Írja be
Az Események lapon maradva válassza a Konfigurálás gombot. Ekkor megnyílik a kiválasztott események eseménykonfigurációs beállításainak mezője.
Válassza a Szűrő (Predikátum) lapot. Ezután válassza ki az új szűrősort, amely szerint kattintson ide egy záradék hozzáadásához. Ebben az oktatóanyagban konfiguráljuk ezt a szűrőt (más néven predikátumot) úgy, hogy rögzítse az összes
SELECTutasítást, amely rendelkezikHAVINGzáradékkal.A Mező legördülő listában válassza a
sqlserver.sql_textlehetőséget.-
Operátor esetén válassza a
like_i_sql_unicode_string.iItt az operátor nevében a case-insensitive szó szerepel. -
Az Érték mezőbe írja be a következőt
%SELECT%HAVING%: Itt a százalékjelek (%) helyettesítő karakterek, amelyek bármely karaktersorozatot helyettesítik.
Megjegyzés:
A mező nevének két részére:
sqlservera csomag neve, éssql_texta mező neve. A korábban kiválasztott eseménynek ugyanabban a csomagban kell lennie,sql_statement_completedmint a választott mezőnek.-
Operátor esetén válassza a
Válassza ki az Adattároló lapot.
A Célok területen válassza ki az új Céltípus sort, amely szerint kattintson ide a cél hozzáadásához. Ebben az oktatóanyagban a rögzített kiterjesztett események adatait egy eseményfájlba fogjuk írni. Ez azt jelenti, hogy az eseményadatok egy olyan fájlban lesznek tárolva, amelyet később megnyithatunk és megtekinthetünk. Az SQL Server 2019-től kezdve (15.x) az eseményadatok az Azure Storage-ban is tárolhatók. Az Azure SQL Database, az Azure SQL Managed Instance és az SQL Database in Fabric esetében az eseményfájlokat mindig az Azure Storage tárolja.
- A Típus legördülő listában válassza
event_filea lehetőséget.
- A Típus legördülő listában válassza
A Tulajdonságok területen írja be a teljes elérési utat és a fájlnevet a kiszolgáló szövegmezőjének Fájlnév mezőjébe. A Tallózás gombot is használhatja. A fájlnévkiterjesztésnek a következőnek kell lennie
xel: . A példánkban használtukC:\temp\YourSession_Target.xel.Képernyőkép az új munkamenet adat-tárolási célpontjainak > típusáról >> event_file > .
Válassza a Speciális lapot. Alapértelmezés szerint a kiterjesztett esemény munkamenetének ez a .xel-célja minimálisan vagy egyáltalán nem befolyásolhatja a kiszolgáló teljesítményét, de a Speciális lapon található beállítások segítségével növelheti vagy csökkentheti az erőforrásokat és a késést.
Az esemény-munkamenet létrehozásához kattintson az alul található OK gombra.
Az SSMS Object Explorerben nyissa meg vagy frissítse a Munkamenetek mappát, és tekintse meg a
YourSessionbővített esemény-munkamenet új csomópontját. A munkamenet még nem indult el. Ebben az oktatóanyagban később elkezdjük.
Esemény-munkamenet szerkesztése az SSMS-ben
Az SSMS Object Explorerben szerkesztheti az esemény munkamenetét, ha a jobb gombbal a csomópontra kattint, majd a Tulajdonságok parancsot választja. Ugyanaz a többoldalas párbeszédpanel jelenik meg.
Esemény-munkamenet létrehozása a T-SQL használatával
Az SSMS-ben létrehozhat egy T-SQL-szkriptet az esemény munkamenetének létrehozásához az alábbiak szerint:
- Kattintson a jobb gombbal az esemény-munkamenet csomópontjára, majd válassza a Szkript munkamenete létrehozás a > vágólapra >lehetőséget.
- Illessze be bármelyik szövegszerkesztőbe.
Íme a létrehozott CREATE EVENT SESSION T-SQL-utasítás a következőhöz YourSession:
CREATE EVENT SESSION [YourSession]
ON SERVER -- For SQL Server and Azure SQL Managed Instance
-- ON DATABASE -- For Azure SQL Database
ADD EVENT sqlserver.sql_statement_completed
(
ACTION(sqlserver.sql_text)
WHERE
( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
)
)
ADD TARGET package0.event_file
(SET filename=N'C:\temp\YourSession_Target.xel');
GO
Megjegyzés:
Az Azure SQL Database-ben a ON DATABASE-t használja ahelyett, hogy ON SERVER-t.
Az eseménymunkamenet feltételes törlése
Az CREATE EVENT SESSION utasítás előtt feltételesen végrehajthat egy utasítást DROP EVENT SESSION , ha már létezik ilyen nevű munkamenet. Ez törli a meglévő munkamenetet. E nélkül az azonos nevű munkamenet létrehozása hibát okoz.
IF EXISTS (SELECT *
FROM sys.server_event_sessions
WHERE name = 'YourSession')
BEGIN
DROP EVENT SESSION YourSession
ON SERVER;
END
GO
Az esemény munkamenetének indítása és leállítása a T-SQL használatával
Esemény-munkamenet létrehozásakor az alapértelmezett beállítás, hogy a munkamenet ne induljon el automatikusan. Az esemény munkamenetét bármikor elindíthatja vagy leállíthatja az alábbi ALTER EVENT SESSION T-SQL utasítással.
ALTER EVENT SESSION [YourSession]
ON SERVER
STATE = START; -- STOP;
Beállíthatja, hogy az esemény munkamenete automatikusan elinduljon az adatbázismotor-példány indításakor. Tekintse meg a STARTUP STATE = ON kulcsszót a(z) CREATE EVENT SESSION-ben.
Az SSMS felhasználói felülete az lapján egy megfelelő jelölőnégyzetet biztosít, >.
Eseménymunkamenet tesztelése
Az esemény munkamenetének tesztelése az alábbi lépésekkel:
- Az Object Explorerben kattintson a jobb gombbal az esemény-munkamenet csomópontjára, majd válassza a Munkamenet indítása parancsot.
- Miközben ugyanahhoz a kiszolgálóhoz (vagy ugyanahhoz az Azure SQL Database-adatbázishoz) csatlakozik, ahol létrehozta az esemény-munkamenetet, futtassa a következő
SELECT...HAVINGutasítást néhányszor. Fontolja meg aHAVINGzáradékban szereplő érték megváltoztatását minden futtatás során, váltogatva a 2 és 3 értékek között. Ez lehetővé teszi az eredmények közötti különbségek megtekintését. - Kattintson a jobb gombbal a munkamenet-csomópontra, és válassza a Munkamenet leállítása parancsot.
- Olvassa el a következő alszakaszt a SELECT és az eredmények megtekintéséről.
SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;
A teljesség érdekében íme az előző SELECT...HAVING példakimenet.
/* Approximate output, 6 rows, all HAVING Count >= 3:
name Count-Per-Column-Repeated-Name
--------------------- ------------------------------
event_group_type 4
event_group_type_desc 4
event_session_address 5
event_session_id 5
is_trigger_event 4
trace_event_id 3
*/
Esemény-munkamenet adatainak megtekintése XML-fájlként
Az SSMS lekérdezési ablakában futtassa az alábbi SELECT utasítást a munkamenet által rögzített eseményadatok megtekintéséhez. Minden sor egy eseményeseményt jelöl. Az CAST(... AS xml) oszlop adattípusa nvarcharrólXML-re változik. Ez lehetővé teszi az oszlop értékének kiválasztását, hogy egy új ablakban nyissa meg a könnyebb olvasás érdekében.
Megjegyzés:
A event_file cél mindig beszúr egy numerikus részt a xel fájlnévbe. A következő lekérdezés futtatása előtt másolja ki a számrészt tartalmazó fájl teljes nevét xel , és illessze be az SELECT utasításba. Az alábbi példában a numerikus rész a következő _0_131085363367310000.
SELECT object_name,
file_name,
file_offset,
event_data,
'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!' AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
CAST(event_data AS XML) AS [event_data_XML]
-- TODO: In the SSMS results grid, click this XML cell
FROM sys.fn_xe_file_target_read_file(
'C:\Temp\YourSession_Target_0_131085363367310000.xel', NULL, NULL, NULL
);
Ez a lekérdezés kétféleképpen tekintheti meg az adott eseménysorok teljes eredményeit:
Futtassa az
SELECT-t az SSMS-ben, majd válasszon ki egy cellát aevent_data_XMLoszlopban.Másolja ki az XML-sztringet az
event_dataoszlop egyik cellából. Illessze be bármelyik szövegszerkesztőbe, például a Jegyzettömbbe, és mentse a fájlt kiterjesztésselxml. Ezután nyissa meg a fájlt egy böngészőben vagy egy XML-adatok megjelenítésére képes szerkesztőben.
Eseményadatok XML-ben
Ezután az eredmények egy részét látjuk, amelyek XML formátumúak. A következő XML-fájl a rövidség kedvéért van szerkesztve.
<data name="row_count"> a korábban megjelenített hat eredménysornak megfelelő értéket 6jeleníti meg. És láthatjuk az egész SELECT állítást.
<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
<data name="duration">
<value>111021</value>
</data>
<data name="cpu_time">
<value>109000</value>
</data>
<data name="physical_reads">
<value>0</value>
</data>
<data name="last_row_count">
<value>6</value>
</data>
<data name="offset">
<value>0</value>
</data>
<data name="offset_end">
<value>584</value>
</data>
<data name="statement">
<value>SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;</value>
</data>
</event>
Esemény-munkamenet adatainak megjelenítése az SSMS-ben
Az SSMS felhasználói felületén számos speciális funkció található, amelyekkel megtekintheti az esemény-munkamenetek által rögzített adatokat. További információ: Eseményadatok megtekintése az SQL Server Management Studióban.
A helyi menüben a Céladatok megtekintése és az Élő adatok megtekintése feliratú beállításokat kell választania.
Céladatok megtekintése
Az SSMS Object Explorerben kattintson a jobb gombbal az esemény munkamenet-csomópontja alatt található célcsomópontra, például package0.event_counter. A helyi menüben válassza a Céladatok megtekintése lehetőséget. Az SSMS megjeleníti az adatokat.
A megjelenítés nem frissül, mivel új események történnek egy munkamenetben. De újra kiválaszthatja a Céladatok megtekintése lehetőséget .
Élő adatok megtekintése
Az SSMS Object Explorerben kattintson a jobb gombbal az esemény munkamenet-csomópontjára. A helyi menüben válassza az Élő adatok megtekintése lehetőséget. Az SSMS megjeleníti a bejövő adatokat, mivel továbbra is valós időben érkeznek.
Kifejezések és fogalmak a bővített eseményekben
Az alábbi táblázat felsorolja a kiterjesztett eseményekhez használt kifejezéseket, és ismerteti azok jelentését.
| Időszak | Description |
|---|---|
event session |
Egy vagy több esemény köré csoportosított szerkezet, valamint a támogató elemek, például a műveletek célpontok. Az CREATE EVENT SESSION utasítás minden esemény-munkamenetet létrehoz. Egy esemény-munkamenetet bármikor elindíthat és leállíthat ALTER .Az eseménymunkameneteket néha csak munkamenetnek nevezik, ha a környezetből egyértelmű, hogy eseménymunkamenetről van szó. Az esemény-munkamenetekkel kapcsolatos további részletek a következő témakörben találhatók: Bővített események munkamenetek. |
event |
Egy adott esemény a rendszerben, amelyet egy aktív esemény munkamenet figyel. Az esemény például azt sql_statement_completed a pillanatot jelöli, amikor egy adott T-SQL-utasítás befejeződik. Az esemény jelentést készíthet az időtartamáról és egyéb adatairól. |
target |
Egy elem, amely a kimeneti adatokat egy rögzített eseményből fogadja. Az eszköz megjeleníti önnek az adatokat. Ilyen például a event_file rövid útmutatóban korábban használt cél, valamint a ring_buffer memóriában a legutóbbi eseményeket tároló cél.Bármilyen cél bármilyen eseményhez vagy munkamenethez használható. További részletekért tekintse meg a Bővített események céljai című témakört. |
action |
Az esemény által ismert mező. A rendszer elküldi a mező adatait a célnak. A műveletmező szorosan kapcsolódik a predikátumszűrőhöz. |
predicate, vagy szűrés |
Egy eseménymező adatainak tesztelése, amelyet úgy használnak, hogy az eseményesemények csak egy érdekes részhalmazát küldjék el a célnak. Egy szűrő például csak azokat az sql_statement_completed eseményeseményeket tartalmazhatja, amelyekben a T-SQL utasítás tartalmazza a sztringet HAVING. |
package |
Minden elemhez kapcsolódik egy névmegkülönböztető, amely egy események középpontja köré szerveződött elemkészlet része. Egy csomagban például lehetnek T-SQL-szövegekkel kapcsolatos események. Az egyik esemény a kötegben lévő összes T-SQL-ről szólhat. Eközben egy másik szűkebb esemény az egyes T-SQL-utasításokról szól. Ezenkívül minden T-SQL-utasítás esetében vannak started és completed események.Az eseményeknek megfelelő mezők is a csomagban vannak az eseményekkel együtt. A legtöbb cél a package0 többi csomag eseményeiben szerepel, és azokkal együtt használják. |
Kiterjesztett eseményforgatókönyvek és használati adatok
Számos forgatókönyv létezik az adatbázismotor és a lekérdezési számítási feladatok figyelésére és hibaelhárítására kiterjesztett események használatával. Az alábbi cikkek példákat mutatnak be zárolással kapcsolatos forgatókönyvek használatával:
-
Keresse meg azokat az objektumokat, amelyeken a legtöbb zárolás van
- Ez a forgatókönyv a hisztogram-célt használja, amely feldolgozza a nyers eseményadatokat, mielőtt összesített (gyűjtőbe foglalt) formában jelenítené meg azokat.
-
Annak meghatározása, hogy mely lekérdezések tartanak zárolást
- Ez a forgatókönyv a pair_matching célt használja, ahol az eseménypár
sqlserver.lock_acquireéssqlserver.lock_release.
- Ez a forgatókönyv a pair_matching célt használja, ahol az eseménypár
Csomagokban elérhető események felderítése
Az alábbi lekérdezés egy sort ad vissza minden elérhető eseményhez, amelynek a neve tartalmazza a három karaktert sql. A LIKE feltétel szerkesztésével különböző eseménynevekre kereshet. Az eredményhalmaz az eseményt tartalmazó csomagot is azonosítja.
SELECT -- Find an event you want.
p.name AS [Package-Name],
o.object_type,
o.name AS [Object-Name],
o.description AS [Object-Descr],
p.guid AS [Package-Guid]
FROM sys.dm_xe_packages AS p
INNER JOIN sys.dm_xe_objects AS o
ON p.guid = o.package_guid
WHERE o.object_type = 'event' --'action' --'target'
AND p.name LIKE '%'
AND o.name LIKE '%sql%'
ORDER BY p.name,
o.object_type,
o.name;
Az alábbi eredmény példája a visszaadott sort mutatja be, amely itt a következő formátumban column name = valuevan elforgatva: . Az adatok az sql_statement_completed előző példalépésekben használt eseményből származnak. Az objektum leírása (ebben a példában egy esemény) dokumentációs sztringként szolgál.
Package-Name = sqlserver
object_type = event
Object-Name = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491
Események keresése az SSMS felhasználói felületén
Az események név szerinti keresésének másik lehetősége az új munkamenetesemények >> eseménytárának párbeszédpanel használata, amely az előző képernyőképen látható. Beírhat egy részleges eseménynevet, és megtalálhatja az összes egyező eseménynevet.
SQL Trace-eseményosztályok
A bővített események SQL Trace-eseményosztályokkal és -oszlopokkal való használatának leírását itt tekintheti meg: Tekintse meg az SQL Trace eseményosztályaival egyenértékű kiterjesztett eseményeket.
Eseménykövetés Windowshoz (ETW)
A Bővített események windowsos eseménykövetéssel (ETW) való használatának leírása a következő címen érhető el:
Rendszeresemény munkamenetek
Az SQL Serverben és a felügyelt Azure SQL-példányban a rendszer alapértelmezés szerint több rendszeresemény-munkamenetet hoz létre, és úgy van konfigurálva, hogy az adatbázismotor indításakor induljon el. A legtöbb esemény-munkamenethez hasonlóan kis mennyiségű erőforrást használnak fel, és nem befolyásolják jelentősen a számítási feladatok teljesítményét. A Microsoft javasolja, hogy ezek a munkamenetek továbbra is engedélyezve legyenek és fussanak. Az állapot-munkamenetek, különösen a system_health munkamenetek gyakran hasznosak a monitorozáshoz és a hibaelhárításhoz.
Ezeket az esemény-munkameneteket az SSMS Object Explorerben, a Bővített események > kezelése munkamenetek alatt >tekintheti meg. Az SQL Serverben például ezek a rendszeresemény-munkamenetek a következők:
AlwaysOn_healthsystem_healthtelemetry_events
PowerShell-szolgáltató
A kiterjesztett eseményeket az SQL Server PowerShell-szolgáltatóval kezelheti. További információ: A PowerShell-szolgáltató használata kiterjesztett eseményekhez.
Rendszernézetek
A kiterjesztett események rendszernézetei a következők:
-
Katalógusnézetek: a megadott esemény-munkamenetekkel
CREATE EVENT SESSIONkapcsolatos információkért. - Dinamikus felügyeleti nézetek (DMV-k): az aktív (elindított) esemény munkamenetekkel kapcsolatos információkért.
Az SQL Server kiterjesztett események rendszernézeteiből származó SELECT-ekről és JOIN-ekről a következő információk találhatók:
- A nézetek egyesítése
- Számos hasznos lekérdezés ezen nézetek alapján
- A korreláció a következők között:
- Oszlopok megtekintése
-
CREATE EVENT SESSIONZáradékok - Az SSMS felhasználói felülete
Függelék: Lekérdezések a kiterjesztett esemény engedélytulajdonosainak megkereséséhez
A cikkben említett engedélyek a következők:
ALTER ANY EVENT SESSIONVIEW SERVER STATECONTROL SERVER
Az alábbi SELECT...UNION ALL utasítás olyan sorokat ad vissza, amelyek bemutatják, hogy ki rendelkezik az esemény-munkamenetek létrehozásához és a kiterjesztett események rendszerkatalógus-nézeteinek lekérdezéséhez szükséges engedélyekkel.
-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes all lower permissions like
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT 'Owner-is-Principal' AS [Type-That-Owns-Permission],
NULL AS [Role-Name],
prin.name AS [Owner-Name],
PERM.permission_name COLLATE Latin1_General_CI_AS_KS_WS AS [Permission-Name]
FROM sys.server_permissions AS PERM
INNER JOIN sys.server_principals AS prin
ON prin.principal_id = PERM.grantee_principal_id
WHERE PERM.permission_name IN (
'CREATE ANY EVENT SESSION',
'ALTER ANY EVENT SESSION',
'VIEW SERVER PERFORMANCE STATE',
'VIEW SERVER STATE',
'CONTROL SERVER'
)
UNION ALL
-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT 'Owner-is-Role',
prin.name, -- [Role-Name]
CAST((IsNull(pri2.name, N'No members')) AS NVARCHAR(128)),
NULL
FROM sys.server_role_members AS rolm
RIGHT JOIN sys.server_principals AS prin
ON prin.principal_id = rolm.role_principal_id
LEFT JOIN sys.server_principals AS pri2
ON rolm.member_principal_id = pri2.principal_id
WHERE prin.name = 'sysadmin';
HAS_PERMS_BY_NAME függvény
Az alábbi SELECT nyilatkozat tájékoztat az ön engedélyeiről. A beépített HAS_PERMS_BY_NAME függvényre támaszkodik.
Továbbá, ha jogosult ideiglenesen más bejelentkezések megszemélyesítésére , visszavonhatja az EXECUTE AS és REVERT az utasításokat, hogy ellenőrizze, hogy más bejelentkezések rendelkeznek-e az ALTER ANY EVENT SESSION engedéllyel.
--EXECUTE AS LOGIN = 'LoginNameHere';
SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER ANY EVENT SESSION');
--REVERT;