Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Fabric
En introduktion till Utökade händelser finns i:
Funktionsuppsättningar, funktioner och användningsscenarier för utökade händelser i Azure SQL Database, SQL Database i Fabric och Azure SQL Managed Instance liknar det som är tillgängligt i SQL Server. De största skillnaderna är:
- I Azure SQL Database, SQL Database i Fabric och Azure SQL Managed Instance
event_fileanvänder målet alltid blobar i Azure Storage i stället för filer på disk.- I SQL Server
event_filekan målet använda antingen filer på diskar eller blobar i Azure Storage.
- I SQL Server
- I Azure SQL Database och SQL Database i Fabric är händelsesessioner alltid databasomfattande. Det innebär att:
- En händelsesession i en databas kan inte samla in händelser från en annan databas.
- En händelse måste inträffa i kontexten för en användardatabas för att ingå i en session.
- I Azure SQL Managed Instance kan du skapa både serveromfattande och databasomfattande händelsesessioner. Vi rekommenderar att du använder händelsesessioner med serveromfattning för de flesta scenarier.
Get started
Det finns två genomgångsexempel som hjälper dig att snabbt komma igång med Extended Events:
-
Skapa en händelsesession med ett event_file mål i Azure Storage. Det här exemplet visar hur du samlar in händelsedata i en fil (blob) i Azure Storage med hjälp av
event_filemålet och innehåller felsökningsvägledning för vanliga fel. Använd detta om du behöver spara insamlade händelsedata, eller om du vill använda loggboken i SQL Server Management Studio (SSMS) för att analysera insamlade data. -
Skapa en händelsesession med ett ring_buffer-målobjekt i minnet. Det här exemplet visar hur du avbildar de senaste händelserna från en händelsesession i minnet med hjälp av
ring_buffermålet. Använd detta som ett snabbt sätt att titta på de senaste händelserna under ad hoc-undersökningar eller felsökning, utan att behöva lagra insamlade händelsedata.
Utökade händelser kan användas för att övervaka skrivskyddade repliker. Mer information finns i Läsa frågor om repliker.
Metodtips
Använd följande metodtips för att använda Utökade händelser på ett säkert, tillförlitligt sätt och utan att påverka databasmotorns hälsotillstånd och arbetsbelastningsprestanda.
- Om du använder
event_filemålet:- Beroende på vilka händelser som läggs till i en session kan filerna som skapas av
event_filemålet innehålla känsliga data. Granska rbac-rolltilldelningar och åtkomstkontrollistor (ACL) på lagringskontot och containern, inklusive ärvd åtkomst, för att undvika onödig läsåtkomst. Följ principen om lägsta behörighet. - Använd ett lagringskonto i samma Azure-region som databasen eller den hanterade instansen där du skapar händelsesessioner.
- Justera redundansen för lagringskontot med redundansen för databasen, den elastiska poolen eller den hanterade instansen. För lokalt redundanta resurser använder du LRS, GRS eller RA-GRS. För zonredundanta resurser använder du ZRS, GZRS eller RA-GZRS. Mer information finns i Azure Storage-redundans .
- Använd inte någon annan blobåtkomstnivå än
Hot. - Aktivera inte det hierarkiska namnområdet för lagringskontot.
- Beroende på vilka händelser som läggs till i en session kan filerna som skapas av
- Om du vill skapa en händelsesession som körs kontinuerligt och som startas automatiskt efter varje omstart av
STARTUP_STATE = ONdatabasmotorn (till exempel efter en redundansväxling eller en underhållshändelse), inkluderar du alternativet händelsesession i dinaCREATE EVENT SESSIONellerALTER EVENT SESSION-instruktioner. - Omvänt kan du använda
STARTUP_STATE = OFFför kortsiktiga händelsesessioner, till exempel de som används i ad hoc-felsökning. - Läs inte dödlägeshändelser från den inbyggda händelsesessionen i
dlAzure SQL Database. Om ett stort antal dödlägeshändelser samlas in kan läsning av dem med funktionen sys.fn_xe_file_target_read_file() orsaka ett out-of-memory-fel imasterdatabasen. Detta kan påverka inloggningsbearbetningen och leda till ett programstopp. De rekommenderade sätten att övervaka dödlägen finns i Samla in dödlägesdiagram i Azure SQL Database med utökade händelser.
Mål för händelsesession
Mer information om extended events-mål som stöds i Azure SQL Database, SQL Database i Fabric, Azure SQL Managed Instance och SQL Server finns i Mål för utökade händelser.
Transact-SQL skillnader
När du kör uttrycken CREATE EVENT SESSION, ALTER EVENT SESSION och DROP EVENT SESSION i SQL Server och i Azure SQL Managed Instance använder ON SERVER du -satsen. I Azure SQL Database använder ON DATABASE du satsen i stället, eftersom händelsesessionerna i Azure SQL Database är databasomfattande.
Katalogvyer för utökade händelser
Extended Events innehåller flera katalogvyer. Katalogvyer berättar om händelsesessionsmetadata eller definition. Dessa vyer returnerar inte information om instanser av aktiva händelsesessioner.
En lista över katalogvyer för varje plattform finns i Katalogvyer för utökade händelser.
Vyer för dynamisk hantering av utökade händelser
Extended Events innehåller flera dynamiska hanteringsvyer (DMV:er). DMV:er returnerar information om startade händelsesessioner.
En lista över DMV:er för varje plattform finns i Vyer för dynamisk hantering av utökade händelser.
Vanliga DMV:er
Det finns ytterligare DMV:er för utökade händelser som är gemensamma för Azure SQL Database, Azure SQL Managed Instance och SQL Server:
Tillgängliga händelser, åtgärder och mål
Du kan hämta tillgängliga händelser, åtgärder och mål med hjälp av den här frågan:
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
Se behörigheter för detaljerade behörigheter per plattform.
Auktorisering och kontroll av lagringscontainer
När du använder event_file målet med Azure Storage-blobar måste databasmotorn som kör händelsesessionen ha specifik åtkomst till blobcontainern. Du kan bevilja den här åtkomsten på något av följande sätt:
Tilldela RBAC-rollen Storage Blob Data Contributor till den hanterade identiteten för den logiska Azure SQL-servern eller azure SQL-hanterad instans i containern och skapa en autentiseringsuppgift för att instruera databasmotorn att använda hanterad identitet för autentisering.
Som ett alternativ till att tilldela RBAC-rollen Storage Blob Data Contributor kan du tilldela följande RBAC-åtgärder:
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/writeSkapa en SAS-token för containern och lagra token i en autentiseringsuppgift.
I Azure SQL Database måste du använda en databasomfattande autentiseringsuppgift. I Azure SQL Managed Instance och SQL Server använder du en autentiseringsuppgift med serveromfattning.
DEN SAS-token som du skapar för din Azure Storage-container måste uppfylla följande krav:
- Ha behörigheterna
rwdl(Read,Write,Delete,List) . - Ha starttid och förfallotid som omfattar händelsesessionens livslängd.
- Har inga IP-adressbegränsningar.
- Ha behörigheterna
Resursstyrning
I Azure SQL Database styrs minnesförbrukningen av utökade händelsesessioner dynamiskt av databasmotorn för att minimera resurskonkurrensen.
Det finns en gräns för tillgängligt minne för händelsesessioner:
- I en enskild databas är det totala sessionsminnet begränsat till 128 MB.
- I en elastisk pool begränsas enskilda databaser av de enskilda databasgränserna och får totalt inte överstiga 512 MB.
Om du får ett felmeddelande som refererar till en minnesgräns kan du vidta följande åtgärder:
- Kör färre samtidiga händelsesessioner.
- Med hjälp av
CREATEochALTERinstruktioner för händelsesessioner minskar du mängden minne som du anger iMAX_MEMORY-satsen för sessionen.
Note
I Utökade händelser MAX_MEMORY visas -satsen i två kontexter: när du skapar eller ändrar en session (på sessionsnivå) och när du använder ring_buffer målet (på målnivå). Ovanstående gränser gäller för minnet på sessionsnivå.
Det finns en gräns för antalet startade händelsesessioner i Azure SQL Database:
- I en enskild databas är gränsen 100.
- I en elastisk pool är gränsen 100 databasomfattande sessioner per pool.
Om du startar en ny utökad händelsesession i kompakta elastiska pooler kan det misslyckas på grund av minnesbegränsningar även när det totala antalet påbörjade sessioner är under 100.
Om du vill hitta det totala minne som förbrukas av en händelsesession kör du följande fråga när du är ansluten till databasen där händelsesessionen startas:
SELECT name AS session_name,
total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;
För att hitta det totala händelsesessionsminnet för en elastisk pool måste den här frågan köras i varje databas i poolen.