Megosztás a következőn keresztül:


Rövid útmutató: Bővített események

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-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) vagy ALTER 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Válassza az Események lapot.

  6. 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_statement a szövegmezőbe. Ez szűri a listát, hogy csak a névvel rendelkező sql_statement esemé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.
  7. 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.

    Képernyőkép az új munkamenet eseményeiről. > Események > kiválasztása az eseménykönyvtárból. Az sql_statement_completed esemény kiválasztva. A következő lépés a konfigurálás gomb.

  8. 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 SELECT utasítást, amely rendelkezik HAVING záradékkal.

  9. 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. i Itt 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: sqlserver a csomag neve, és sql_text a mező neve. A korábban kiválasztott eseménynek ugyanabban a csomagban kell lennie, sql_statement_completedmint a választott mezőnek.

    Képernyőkép az Új munkamenetesemények >> konfigurálási > szűrő (Predikátum) > mezőről.

  10. Válassza ki az Adattároló lapot.

  11. 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.
  12. 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áltuk C:\temp\YourSession_Target.xel.

    Képernyőkép az új munkamenet adat-tárolási célpontjainak > típusáról >> event_file > .

  13. 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.

    Képernyőkép az Új munkamenetről > Speciális.

  14. Az esemény-munkamenet létrehozásához kattintson az alul található OK gombra.

  15. Az SSMS Object Explorerben nyissa meg vagy frissítse a Munkamenetek mappát, és tekintse meg a YourSession bő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:

  1. Az Object Explorerben kattintson a jobb gombbal az esemény-munkamenet csomópontjára, majd válassza a Munkamenet indítása parancsot.
  2. 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...HAVING utasítást néhányszor. Fontolja meg a HAVING zá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.
  3. Kattintson a jobb gombbal a munkamenet-csomópontra, és válassza a Munkamenet leállítása parancsot.
  4. 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 a event_data_XML oszlopban.

  • Másolja ki az XML-sztringet az event_data oszlop egyik cellából. Illessze be bármelyik szövegszerkesztőbe, például a Jegyzettömbbe, és mentse a fájlt kiterjesztéssel xml. 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:

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_health
  • system_health
  • telemetry_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 SESSION Zá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 SESSION
  • VIEW SERVER STATE
  • CONTROL 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;