Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:Azure SQL Database
Azure SQL Managed Instance
SQL database ve Fabric
Úvod do rozšířených událostí najdete tady:
Sady funkcí, funkce a scénáře použití rozšířených událostí ve službě Azure SQL Database, sql database in Fabric a Azure SQL Managed Instance jsou podobné tomu, co je dostupné na SQL Serveru. Hlavní rozdíly:
- V Azure SQL Database, SQL databázi ve Fabricu a Azure SQL Managed Instance
event_filecíl vždy používá objekty blob ve službě Azure Storage místo souborů na disku.- V SQL Serveru
event_filemůže cíl používat soubory na disku nebo bloby v Azure úložišti.
- V SQL Serveru
- V Azure SQL Database a databázi SQL v prostředcích infrastruktury jsou relace událostí vždy vymezeny oborem databáze. To znamená, že:
- Relace událostí v jedné databázi nemůže shromažďovat události z jiné databáze.
- K události musí dojít v kontextu uživatelské databáze, která se má zahrnout do relace.
- Ve službě Azure SQL Managed Instance můžete vytvořit relace událostí v oboru serveru i databáze. Pro většinu scénářů doporučujeme používat relace událostí v oboru serveru.
Začínáme
Existují dva příklady návodů, které vám pomůžou rychle začít s rozšířenými událostmi:
-
Vytvořte relaci události s cílovým objektem v úložišti Azure. Tento příklad ukazuje, jak zachytit data událostí v souboru (objektu blob) ve službě Azure Storage pomocí
event_filecíle a obsahuje pokyny k řešení běžných chyb. Tuto možnost použijte, pokud potřebujete zachovat zachycená data událostí nebo pokud chcete k analýze zachycených dat použít prohlížeč událostí v aplikaci SQL Server Management Studio (SSMS). -
Vytvořte relaci událostí s cílovou jednotkou ring_buffer v paměti. Tento příklad ukazuje, jak zachytit nejnovější události z relace událostí v paměti pomocí
ring_buffercíle. Můžete se tak rychle podívat na nedávné události během ad hoc šetření nebo řešení potíží, aniž byste museli ukládat zachycená data událostí.
Rozšířené události lze použít k monitorování replik jen pro čtení. Další informace najdete v tématu Čtení dotazů na repliky.
Osvědčené postupy
Při používání rozšířených událostí bezpečně, spolehlivě a bez vlivu na stav databázového stroje a výkon úloh využijte následující osvědčené postupy.
- Pokud použijete
event_filecíl:- V závislosti na událostech přidaných do relace můžou soubory vytvořené
event_filecílem obsahovat citlivá data. Pečlivě zkontrolujte přiřazení rolí RBAC a seznamy řízení přístupu (ACL) v účtu úložiště a kontejneru, včetně zděděného přístupu, abyste se vyhnuli udělení zbytečného přístupu ke čtení. Dodržujte zásadu nejnižších oprávnění. - Použijte účet úložiště ve stejné oblasti Azure jako databázi nebo spravovanou instanci, ve které vytváříte relace událostí.
- Zarovnejte redundanci účtu úložiště s redundancí databáze, elastického fondu nebo spravované instance. Pro místně redundantní prostředky použijte LRS, GRS nebo RA-GRS. Pro zónově redundantní prostředky použijte ZRS, GZRS nebo RA-GZRS. Podrobnosti najdete v části Redundance služby Azure Storage.
- Nepoužívejte jinou úroveň přístupu k objektům blob než
Hot. - Nepovolujte hierarchický obor názvů pro účet úložiště.
- V závislosti na událostech přidaných do relace můžou soubory vytvořené
- Pokud chcete vytvořit nepřetržitě spuštěnou relaci událostí, která se spustí automaticky po každém restartování databázového stroje (například po převzetí služeb při selhání nebo události údržby), zahrňte do příkazů
STARTUP_STATE = ONneboCREATE EVENT SESSIONpříkazů možnostALTER EVENT SESSIONrelace události. - Naopak se používají
STARTUP_STATE = OFFpro krátkodobé relace událostí, jako jsou relace používané při řešení potíží ad hoc. - Ve službě Azure SQL Database nečtěte události vzájemného zablokování z integrované
dlrelace událostí. Pokud se shromažďuje velký počet událostí vzájemného zablokování, může jejich čtení pomocí funkce sys.fn_xe_file_target_read_file() způsobit chybu nedostatku paměti vmasterdatabázi. To může mít vliv na zpracování přihlášení a způsobit výpadek aplikace. Doporučené způsoby monitorování zablokování najdete v tématu Shromažďování grafů vzájemného zablokování ve službě Azure SQL Database s rozšířenými událostmi.
Cíle relace událostí
Další informace o cílech rozšířených událostí podporovaných ve službě Azure SQL Database, SQL databázi v rámci Fabric, Azure SQL Managed Instance a SQL Serveru najdete v tématu Cíle pro rozšířené události.
rozdíly Transact-SQL
Když spustíte příkazy CREATE EVENT SESSION, ALTER EVENT SESSION a DROP EVENT SESSION v SQL Serveru a ve spravované instanci Azure SQL, použijete klauzuli ON SERVER . Ve službě Azure SQL Database místo toho použijete ON DATABASE klauzuli, protože v relacích událostí Azure SQL Database jsou obor databáze.
Zobrazení katalogu rozšířených událostí
Rozšířené události poskytují několik zobrazení katalogu. Zobrazení katalogu vás seznámí s metadaty nebo definicí relace událostí. Tato zobrazení nevrací informace o instancích aktivních relací událostí.
Seznam zobrazení katalogu pro každou platformu najdete v tématu Zobrazení katalogu rozšířených událostí.
Zobrazení dynamické správy rozšířených událostí
Rozšířené události poskytují několik zobrazení dynamické správy (DMV). Zobrazení dynamické správy vrací informace o spuštěných relacích událostí.
Seznam zobrazení dynamické správy pro každou platformu najdete v tématu Zobrazení dynamické správy rozšířených událostí.
Běžná zobrazení dynamické správy
Existují další rozšířené dynamické správy událostí, které jsou společné pro Azure SQL Database, Azure SQL Managed Instance a SQL Server:
Dostupné události, akce a cíle
Pomocí tohoto dotazu můžete získat dostupné události, akce a cíle:
SELECT o.object_type,
p.name AS package_name,
o.name AS db_object_name,
o.description AS db_obj_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE o.object_type IN ('action','event','target')
ORDER BY o.object_type,
p.name,
o.name;
Permissions
Podívejte se na oprávnění pro podrobná oprávnění podle platformy.
Autorizace a řízení kontejneru úložiště
Když použijete event_file cíl s objekty blob služby Azure Storage, databázový stroj, na kterém je spuštěná relace událostí, musí mít specifický přístup ke kontejneru objektů blob. Tento přístup můžete udělit jedním z následujících způsobů:
Přiřaďte roli RBAC přispěvatele dat v objektu blob úložiště ke spravované identitě logického serveru Azure SQL nebo spravované instance Azure SQL v kontejneru a vytvořte přihlašovací údaje, které můžou databázovému stroji dát pokyn k použití spravované identity k ověřování.
Jako alternativu k přiřazení role RBAC přispěvatele dat v objektech blob služby Storage můžete přiřadit následující akce RBAC:
Namespace Action Microsoft.Storage/storageAccounts/blobServices/containers/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/writeVytvořte token SAS pro kontejner a uložte token do přihlašovacích údajů.
Ve službě Azure SQL Database musíte použít přihlašovací údaje s oborem databáze. Ve službě Azure SQL Managed Instance a SQL Serveru použijte přihlašovací údaje s oborem serveru.
Token SAS, který vytvoříte pro kontejner Azure Storage, musí splňovat následující požadavky:
-
rwdlMít oprávnění (Read,Write,Delete,List) - Mít čas zahájení a vypršení platnosti, které zahrnují životnost relace události.
- Nemá žádná omezení IP adres.
-
Zásady správného řízení prostředků
Ve službě Azure SQL Database je spotřeba paměti rozšířenými relacemi událostí dynamicky řízena databázovým strojem za účelem minimalizace kolizí prostředků.
Pro relace událostí je k dispozici limit paměti:
- V jedné databázi je celková paměť relace omezená na 128 MB.
- V elastickém fondu jsou jednotlivé databáze omezeny limity jednotlivých databází a celkem nemohou překročit 512 MB.
Pokud se zobrazí chybová zpráva odkazující na limit paměti, můžete provést opravné akce:
- Spusťte méně souběžných relací událostí.
- Použití
CREATEaALTERpříkazy pro relace událostí snižte množství paměti, kterou zadáte vMAX_MEMORYklauzuli relace.
Note
V rozšířených událostech MAX_MEMORY se klauzule zobrazí ve dvou kontextech: při vytváření nebo změně relace (na úrovni relace) a při použití ring_buffer cíle (na cílové úrovni). Výše uvedené limity platí pro paměť na úrovni relace.
Počet spuštěných relací událostí ve službě Azure SQL Database je omezený:
- V jedné databázi je limit 100.
- V elastickém fondu je limit 100 relací s oborem databáze na fond.
V hustých elastických fondech může spuštění nové rozšířené relace událostí selhat kvůli omezením paměti, i když je celkový počet spuštěných relací nižší než 100.
Pokud chcete zjistit celkovou paměť spotřebovanou relací událostí, spusťte následující dotaz při připojení k databázi, ve které je spuštěna relace události:
SELECT name AS session_name,
total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;
Pokud chcete zjistit celkovou paměť relace událostí pro elastický fond, musí se tento dotaz spustit ve všech databázích ve fondu.