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


Eseményértesítések

A következőkre vonatkozik:SQL Server

Az eseményértesítések információkat küldenek az eseményekről a Service Broker szolgáltatásnak. Az eseményértesítések számos Transact-SQL adatdefiníciós nyelvi (DDL-) utasításra és SQL Trace-eseményre reagálva futnak, ha az eseményekről adatokat küldenek egy Service Broker szolgáltatásnak.

Az eseményértesítések a következők végrehajtására használhatók:

  • Naplózza és tekintse át az adatbázisban bekövetkező változásokat vagy tevékenységeket.
  • Műveletet hajthat végre egy eseményre válaszul szinkron helyett aszinkron módon.

Az eseményértesítések programozási alternatívát kínálnak a DDL-eseményindítók és az SQL Trace helyett.

Eseményértesítések előnyei

Az eseményértesítések aszinkron módon futnak, a tranzakció hatókörén kívül. Ezért a DDL-eseményindítókkal ellentétben az eseményértesítések az adatbázisalkalmazáson belül is használhatók az eseményekre való reagáláshoz anélkül, hogy az azonnali tranzakció által meghatározott erőforrásokat használnánk.

Az SQL Trace-sel ellentétben az eseményértesítések az SQL Server egy példányán belüli művelet végrehajtására használhatók egy SQL Trace-eseményre válaszul.

Az eseményadatokat az SQL Serverrel együtt futó alkalmazások használhatják az előrehaladás nyomon követésére és a döntések meghozatalára. Az alábbi eseményértesítés például minden alkalommal értesítést küld egy adott szolgáltatásnak, amikor ALTER TABLE utasítást adnak ki a AdventureWorks2025 mintaadatbázisban.

USE AdventureWorks2022;
GO

CREATE EVENT NOTIFICATION NotifyALTER_T1
    ON DATABASE
    FOR ALTER_TABLE
    TO SERVICE '//Adventure-Works.com/ArchiveService',
        '8140a771-3c4b-4479-8ac0-81008ab17984';

Az eseményértesítések fogalmai

Eseményértesítés létrehozásakor megnyílik egy vagy több Service Broker-beszélgetés az SQL Server egy példánya és a megadott célszolgáltatás között. A beszélgetések általában mindaddig nyitva maradnak, amíg az eseményértesítés objektumként létezik a kiszolgálópéldányon. Bizonyos esetekben a beszélgetések az eseményértesítés elvetése előtt bezárhatók. Ezek a beszélgetések soha nem lesznek megosztva az eseményértesítések között. Minden eseményértesítésnek saját kizárólagos beszélgetései vannak. A beszélgetés befejezése kifejezetten megakadályozza, hogy a célszolgáltatás több üzenetet kapjon, és a beszélgetés nem nyílik meg újra az eseményértesítés következő aktiválásakor.

Az eseményinformációk xml típusú változóként érkeznek a Service Broker szolgáltatáshoz, amely információt nyújt az esemény bekövetkezésének időpontjáról, az érintett adatbázis-objektumról, az érintett Transact-SQL kötegelt utasításról és egyéb információkról. Az eseményértesítések által létrehozott XML-sémával kapcsolatos további információkért lásd: EVENTDATA.

Eseményértesítések és eseményindítók

Az alábbi táblázat az eseményindítókat és az eseményértesítéseket hasonlítja össze és hasonlítja össze.

Kiváltók Eseményértesítések
A DML-eseményindítók válaszolnak az adatmanipulációs nyelvi (DML-) eseményekre. A DDL-eseményindítók válaszolnak az adatdefiníciós nyelvi (DDL-) eseményekre. Az eseményértesítések válaszolnak a DDL-eseményekre és az SQL-nyomkövetési események egy részhalmazára.
Az eseményindítók Transact-SQL vagy közös nyelvi futtatókörnyezet (CLR) által felügyelt kódot futtathatnak. Az eseményértesítések nem futtatnak kódot. Ehelyett xml-üzeneteket küldenek egy Service Broker szolgáltatásnak.
Az eseményindítók szinkron módon lesznek feldolgozva a aktiválódást okozó tranzakciók hatókörén belül. Előfordulhat, hogy az eseményértesítések aszinkron módon vannak feldolgozva, és nem futnak a aktiválódást okozó tranzakciók hatókörében.
Az eseményindító fogyasztója szorosan kapcsolódik ahhoz az eseményhez, amely a kiváltó eseményt okozza. Az eseményértesítés fogyasztója leválasztva van az eseményről, amely a tüzet okozza.
Az eseményindítókat a helyi kiszolgálón kell feldolgozni. Az eseményértesítések egy távoli kiszolgálón is feldolgozhatók.
Az eseményindítók visszatekerhetők. Az eseményértesítések nem állíthatók vissza.
A DML-eseményindítók nevei séma hatókörrel vannak elosztva. A DDL-eseményindítók neve adatbázis-hatókörű vagy kiszolgáló hatókörű. Az eseményértesítések nevét a kiszolgáló vagy az adatbázis hatóköre határozza meg. Egy QUEUE_ACTIVATION esemény eseményértesítései egy adott üzenetsorra vonatkoznak.
A DML-eseményindítók tulajdonosa ugyanaz, mint azok a táblák, amelyekre alkalmazva vannak. Előfordulhat, hogy egy üzenetsor eseményértesítésének tulajdonosa más tulajdonossal rendelkezik, mint az objektum, amelyre alkalmazták.
Az eseményindítók támogatják a záradékot EXECUTE AS . Az eseményértesítések nem támogatják a záradékot EXECUTE AS .
A DDL-eseményindító eseményinformációi az EVENTDATA függvénnyel rögzíthetők, amely xml-adattípust ad vissza. Az eseményértesítések xml eseményinformációkat küldenek egy Service Broker szolgáltatásnak. Az információ az EVENTDATA függvényével megegyező sémába van formázva.
Az eseményindítókra vonatkozó metaadatok a sys.triggers katalógusnézetekben sys.server_triggers találhatók. Az eseményértesítésekkel kapcsolatos metaadatok a sys.event_notificationssys.server_event_notifications katalógusnézetekben találhatók.

Eseményértesítések vs. SQL Nyomkövetés

Az alábbi táblázat az eseményértesítések és az SQL Trace használatával hasonlítja össze és hasonlítja össze a kiszolgálói események monitorozását.

SQL Trace Eseményértesítések
Az SQL Trace nem generál teljesítményterhelést a tranzakciókhoz társítva. Az adatok csomagolása hatékony. Az XML-formátumú eseményadatok létrehozásával és az eseményértesítés küldésével kapcsolatos teljesítménybeli többletterheléssel jár.
Az SQL Trace bármilyen nyomkövetési eseményosztályt figyelhet. Az eseményértesítések figyelhetik a nyomkövetési eseményosztályok egy részét, valamint az összes adatdefiníciós nyelvi (DDL) eseményt is.
Testre szabhatja, hogy mely adatoszlopokat hozza létre nyomkövetési eseményben. Az eseményértesítések által visszaadott XML-formátumú eseményadatok sémája ki van javítva.
A DDL által generált nyomkövetési események mindig létrejönnek, függetlenül attól, hogy a DDL utasítás vissza lesz-e állítva. Az eseményértesítések nem indulnak el, ha a megfelelő DDL-utasításban szereplő esemény vissza lesz állítva.
A nyomkövetési eseményadatok köztes folyamatának kezelése magában foglalja a nyomkövetési fájlok vagy nyomkövetési táblák feltöltését és kezelését. Az eseményértesítési adatok köztes kezelése automatikusan történik a Service Broker üzenetsorain keresztül.
A nyomkövetéseket minden alkalommal újra kell indítani, amikor a kiszolgáló újraindul. A regisztráció után az eseményértesítések a kiszolgálói ciklusok során is megmaradnak, és át lesznek kapcsolva.
A kezdeményezés után a nyomok kilövését nem lehet szabályozni. A leállítási idők és a szűrési idők segítségével megadhatja, hogy mikor kezdeményezik. A nyomkövetések a megfelelő nyomkövetési fájl lekérdezésével érhetők el. Az eseményértesítések az eseményértesítés által létrehozott üzenetet fogadó üzenetsoron lévő utasítással WAITFOR vezérelhetők. Az üzenetsor lekérdezésével érhetők el.
ALTER TRACE A nyomkövetés létrehozásához szükséges legkisebb engedély. A nyomkövetési fájlnak a megfelelő számítógépen való létrehozásához is engedély szükséges. A legkisebb engedély a létrehozott eseményértesítés típusától függ. RECEIVE engedélyre van szükség a megfelelő üzenetsoron is.
A nyomkövetések távolról is fogadhatók. Az eseményértesítések távolról is fogadhatók.
A nyomkövetési események rendszer által tárolt eljárásokkal implementálódnak. Az eseményértesítések a Database Engine és a Service Broker Transact-SQL utasítások kombinációjával implementálódnak.
A nyomkövetési esemény adatai programozott módon érhetők el a megfelelő nyomkövetési tábla lekérdezésével, a nyomkövetési fájl elemzésével vagy az SQL Server Management Objects (SMO) TraceReader osztály használatával. Az eseményadatok programozott módon érhetők el, ha XQueryt bocsátanak ki az XML-formátumú eseményadatokon, vagy az SMO eseményosztályok használatával.

Eseményértesítési feladatok

Feladatok Cikk
Az eseményértesítések létrehozásának és implementálásának módját ismerteti. Eseményértesítések implementálása
Ismerteti, hogyan konfigurálhatja a Service Broker párbeszédpanel-biztonságát olyan eseményértesítésekhez, amelyek üzeneteket küldenek egy távoli kiszolgálón lévő szolgáltatásközvetítőnek. Az eseményértesítések párbeszédpanel-biztonságának konfigurálása
Az eseményértesítések adatainak visszaküldését ismerteti. Információk lekérése az eseményértesítésekről