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