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
De övergripande stegen i den här genomgången är:
- Skapa ett Azure Storage-konto eller hitta ett befintligt lämpligt konto att använda.
- Skapa en container i det här lagringskontot.
- Bevilja databasmotorn nödvändig åtkomst till containern med antingen en RBAC-rolltilldelning eller en SAS-token.
- Skapa en autentiseringsuppgift i databasen eller instansen där du skapar händelsesessionen.
- Skapa, starta och använda en händelsesession.
Skapa ett lagringskonto och en container
En detaljerad beskrivning av hur du skapar ett lagringskonto i Azure Storage finns i Skapa ett lagringskonto. Du lär dig hur du skapar ett lagringskonto med hjälp av Azure-portalen, PowerShell, Azure SQL, en ARM-mall eller en Bicep-mall.
Använd ett konto som:
- Är ett
Standard general-purpose v2konto. - Har sin redundanstyp som matchar redundansen för Azure SQL-databasen, den elastiska poolen eller den hanterade instansen där händelsesessioner skapas.
- För lokalt redundanta Azure SQL-resurser använder du LRS, GRS eller RA-GRS. För zonredundanta Azure SQL-resurser använder du ZRS, GZRS eller RA-GZRS. Mer information finns i Azure Storage-redundans.
- Använder
Hotblobåtkomstnivån. - Finns i samma Azure-region som Azure SQL-databasen, elastisk pool, Infrastrukturkapacitet eller SQL-hanterad instans.
- Det hierarkiska namnområdet är inte aktiverat.
Skapa sedan en container i det här lagringskontot med hjälp av Azure-portalen. Du kan också skapa en container med PowerShell eller använda Azure CLI.
Observera namnen på lagringskontot och containern som du skapade. Du använder dem i följande steg.
Bevilja först åtkomst till containern. För att läsa och skriva händelsedata kräver databasmotorn specifik åtkomst till containern. Du kan bevilja den här åtkomsten på ett av två sätt, beroende på ditt val av autentiseringstyp:
Om du använder hanterad identitet med Microsoft Entra-autentisering tilldelar du RBAC-rollen Storage Blob Data Contributor för containern till den hanterade identiteten för den logiska Azure SQL-servern eller den hanterade Azure SQL-instansen.
Om du använder hemlig autentisering skapar du en SAS-token för containern.
Om du vill använda den här autentiseringstypen måste alternativet Tillåt åtkomst till lagringskontonyckel vara aktiverat. Mer information finns i Förhindra auktorisering av delad nyckel för ett Azure Storage-konto.
Bevilja åtkomst med hjälp av hanterad identitet
I Azure-portalen går du till identitetssidan för din logiska Azure SQL-server eller Azure SQL-hanterade instans och kontrollerar att en hanterad identitet har tilldelats. Mer information finns i Hanterade identiteter i Microsoft Entra för Azure SQL.
I Azure-portalen går du till lagringscontainern där du vill lagra händelsedata. På sidan Åtkomstkontroll (IAM) väljer du Lägg till för att tilldela RBAC-rollen Storage Blob Data Contributor till den hanterade identiteten för den logiska servern eller SQL-hanterad instans.
Om den logiska servern eller SQL-hanterade instansen har sin systemtilldelade hanterade identitet aktiverad tilldelar du rollen till den identiteten. Om den systemtilldelade identiteten är inaktiverad, men det finns en eller flera användartilldelade identiteter, tilldelar du rollen till den användartilldelade identiteten som har angetts som den primära identiteten.
Mer information finns i Tilldela en Azure-roll för åtkomst till blobdata.
Skapa en autentiseringsuppgift för att instruera databasmotorn att autentisera till Azure Storage med hjälp av hanterad identitet för en specifik container-URL.
I Azure SQL Database och SQL Database i Microsoft Fabric skapar du en databasomfattande autentiseringsuppgift. Med hjälp av ett klientverktyg som SSMS öppnar du ett nytt frågefönster, ansluter till databasen där du skapar händelsesessionen och klistrar in följande T-SQL-batch. Kontrollera att du är ansluten till din användardatabas och inte till
masterdatabasen.Note
För att köra följande T-SQL-batch krävs databasbehörigheten
CONTROL. Som standard innehas behörigheten av databasägaren (dbo), av medlemmarna i databasrollendb_owneroch av administratören för den logiska servern./* (Re-)create a database scoped credential if needed. */ IF EXISTS (SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The name of the credential must match the URL of the blob container. When using managed identity, the credential does not contain a secret. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'MANAGED IDENTITY';
Innan du kör den här batchen gör du följande ändring:
- I alla tre förekomsterna av
https://<storage-account-name>.blob.core.windows.net/<container-name>ersätter du<storage-account-name>med namnet på ditt lagringskonto och ersätter<container-name>med namnet på containern.
Bevilja åtkomst med hjälp av en SAS-token
I Azure-portalen navigerar du till lagringskontot och containern som du skapade. Välj containern och gå till Inställningar > Delade åtkomsttoken.
SAS-token måste uppfylla följande krav:
-
Behörigheter inställda på
Read,Write,Delete,List. - Starttiden och förfallotiden måste omfatta händelsesessionens livslängd. DEN SAS-token som du skapar fungerar bara inom det här tidsintervallet.
- Har inga IP-adressbegränsningar.
Välj knappen Generera SAS-token och URL. SAS-token finns i rutan Blob SAS-token . Du kan kopiera den för användning i nästa steg.
Important
SAS-token ger läs- och skrivåtkomst till den här containern. Behandla det som du skulle behandla ett lösenord eller någon annan hemlighet.
-
Behörigheter inställda på
Skapa en autentiseringsuppgift för att lagra SAS-token.
Lagra SAS-token i en databasomfattande autentiseringsuppgift. Med hjälp av ett klientverktyg som SSMS öppnar du ett nytt frågefönster, ansluter till databasen där du skapar händelsesessionen och klistrar in följande T-SQL-batch. Kontrollera att du är ansluten till din användardatabas och inte till
masterdatabasen.Note
För att köra följande T-SQL-batch krävs databasbehörigheten
CONTROL. Som standard innehas behörigheten av databasägaren (dbo), av medlemmarna i databasrollendb_owneroch av administratören för den logiska servern./* Create a master key to protect the secret of the credential */ IF NOT EXISTS (SELECT 1 FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##') CREATE MASTER KEY; /* (Re-)create a database scoped credential if needed. */ IF EXISTS ( SELECT 1 FROM sys.database_credentials WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The name of the credential must match the URL of the blob container. The secret is the SAS token for the container. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<sas-token>';Innan du kör den här batchen gör du följande ändringar:
- I alla tre förekomsterna av
https://<storage-account-name>.blob.core.windows.net/<container-name>ersätter du<storage-account-name>med namnet på ditt lagringskonto och ersätter<container-name>med namnet på containern. - I -
SECRETsatsen ersätter du<sas-token>med den SAS-token som du kopierade i föregående steg.
- I alla tre förekomsterna av
Skapa, starta och stoppa en händelsesession
När autentiseringsuppgifterna har skapats kan du skapa händelsesessionen. Till skillnad från att skapa autentiseringsuppgifterna kräver inte skapandet av en händelsesession behörigheten CONTROL . När autentiseringsuppgifterna har skapats kan du skapa händelsesessioner även om du har mer begränsade behörigheter. Se Behörigheter för de specifika behörigheter som behövs.
I SQL Server Management Studio (SSMS) ansluter du till den logiska Azure SQL Database-servern.
Expandera noden Utökade händelser under mappen Hantering .
Högerklicka på mappen Sessioner och välj Ny session....
På sidan Allmänt anger du ett namn för sessionen, som ska användas
example-sessionför följande kodexempel.På sidan Händelser väljer du en eller flera händelser som ska läggas till i sessionen. I det här exemplet valde vi händelsen
sql_batch_starting.På sidan Datalagring väljer du
event_filesom måltyp.- För en lokal händelsefil väljer du den lokala filplatsen.
- För en händelsefilblob som lagras i Azure Storage klistrar du in URL:en för lagringscontainern i rutan Lagrings-URL . Skriv ett snedstreck (
/) i slutet av den här URL:en följt av filnamnet (blob). Till exempelhttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
På sidan Datalagring väljer du
event_filesom måltyp och klistrar in URL:en för lagringscontainern i rutan Lagrings-URL . Skriv ett snedstreck (/) i slutet av den här URL:en följt av filnamnet (blob). I vårt exempel ärexample-session.xelblobnamnet , och hela URL:en ärhttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.Note
För SQL Managed Instance använder du knappen Skript för att skapa ett T-SQL-skript för sessionen i stället för att klistra in lagringscontainerns URL på sidan Datalagring. Ange container-URL:en som värde för
filenameargumentet, liknande SQL Managed Instance-exemplet nedan, och kör skriptet för att skapa sessionen.Nu när sessionen har konfigurerats kan du välja knappen Skript för att skapa ett T-SQL-skript för sessionen för att spara det till senare. Här är skriptet för vår exempelsession:
CREATE EVENT SESSION [example-session] ON DATABASE ADD EVENT sqlserver.sql_batch_starting ADD TARGET package0.event_file (SET filename=N'https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel'); GO
Välj OK för att skapa sessionen.
I Object Explorer expanderar du mappen Sessioner för att se den händelsesession som du skapade. Som standard startas inte sessionen när den skapas. Starta sessionen genom att högerklicka på sessionsnamnet och välja Starta session. Du kan senare stoppa det genom att på liknande sätt välja Stoppa session när sessionen körs.
När T-SQL-batchar körs skriver sessionen händelser till bloben example-session.xel i lagringscontainern.
Om du vill stoppa sessionen högerklickar du på den i Object Explorer och väljer Stoppa session.
Felsöka händelsesessioner med ett event_file-target i Azure Storage
Följande lista innehåller fel som du kan stöta på när du startar en utökad händelsesession som använder Azure Storage, med möjliga förklaringar till felet.
-
Operativsystemet returnerade fel 5: "Åtkomst nekas."
- Om du använder hanterad identitetsautentisering:
- Den hanterade identitet som används av databasmotorn har inte den RBAC-rolltilldelning som krävs. Mer information finns i Bevilja åtkomst med hjälp av hanterad identitet.
-
Brandväggen för lagringskontot är aktiverad och ett undantag för att tillåta betrodda Azure-tjänster att komma åt lagringskontot är också aktiverat, men en
Microsoft.Sql/serversresursinstans för den logiska servern har inte lagts till i listan över resursinstanser som beviljas åtkomst. Mer information finns i Bevilja åtkomst från Azure-resursinstanser. - Om du använder en nätverkssäkerhetsperimeter med framtvingat läge finns inte databasen och lagringskontot i samma perimeter.
- Om du använder SAS-tokenautentisering:
- Brandväggen för lagringskontot är aktiverad. Detta stöds inte för händelsesessioner som använder SAS-tokenautentisering.
- SAS-token har inte tillräcklig behörighet eller har upphört att gälla. Mer information finns i Bevilja åtkomst med hjälp av en SAS-token.
- Om du använder en nätverkssäkerhetsperimeter med framtvingat läge är åtkomstregler som tillåter obegränsad utgående kommunikation från databasen och obegränsad inkommande kommunikation till lagringskontot inte på plats.
- Om du använder hanterad identitetsautentisering:
-
Operativsystemet returnerade fel 86: "Det angivna nätverkslösenordet är inte korrekt."
- Det finns inga databasomfattande autentiseringsuppgifter (för Azure SQL Database) eller autentiseringsuppgifter med serveromfattning (för Azure SQL Managed Instance eller SQL Server) med namnet som matchar blobcontainerns URL. Mer information finns i exemplen för att bevilja åtkomst med hjälp av hanterad identitet eller Bevilja åtkomst med hjälp av en SAS-token.
- Namnet på autentiseringsuppgifterna slutar med ett snedstreck (
/). Namnet på autentiseringsuppgifterna ska sluta med containernamnet utan det avslutande snedstrecket.
-
Operativsystemet returnerade fel 3: "Det går inte att hitta den angivna sökvägen."
- Containern som anges i blobcontainerns URL finns inte.
-
Operativsystemet returnerade fel 13: "Data är ogiltiga."
- Det finns en oföränderlig princip för blobcontainern. Oföränderlig lagring stöds inte för händelsesessioner.
- Lagringskontot har det hierarkiska namnområdet aktiverat. Lagringskonton med hierarkiskt namnområde aktiverat stöds inte för händelsesessioner.
Visa händelsedata
Du kan visa händelsedata i användargränssnittet för SQL Server Management Studio (SSMS), där du kan använda filter och sammansättningar för att analysera de data som du har samlat in. Mer information om hur du använder loggboken i SSMS finns i Visa händelsedata i SQL Server Management Studio.
Visa händelsedata med T-SQL
Om du vill läsa händelsesessionsdata med T-SQL använder du funktionen sys.fn_xe_file_target_read_file(). Om du vill använda den här funktionen i en annan databas eller instans än den där händelsesessionen skapas måste du bevilja åtkomst till containern till databasmotorn på lagringscontainern med händelsedatablobbarna. Se Bevilja åtkomst med hanterad identitet eller Bevilja åtkomst med hjälp av en SAS-token.
En mer detaljerad genomgång finns i Skapa en händelsesession i SSMS.
Ladda ned xel-filer från Azure Storage
Tip
Om du använder SSMS v19.2 eller senare behöver du inte ladda ned xel filer enligt beskrivningen i det här avsnittet. I dessa versioner läser SSMS xel-filerna för varje session direkt från Azure Storage-containern. Mer information finns i bloggen Förbättra utökade händelser i Azure SQL .
Ladda ned bloben xel för sessionen från lagringscontainern och spara den som en lokal fil. I Azure-portalen letar du reda på det lagringskonto som du använde, väljer Containrar under Datalagring och väljer den container som du skapade för händelsesessionen. Blobben för sessionen har sessionsnamnet som den första delen av sitt namn, med ett numeriskt suffix. Välj ellipsen (...) för att visa snabbmenyn för bloben och välj Ladda ned.
Du kan installera Azure Storage Explorer för att ladda ned flera xel blobar i en åtgärd.
xel När filen har laddats ned öppnar du den i SSMS. På huvudmenyn för SSMS går du till Arkiv och väljer Öppna. Om du har en enda xel fil väljer du Arkiv... och bläddrar till filen som du laddade ned. Om du har flera xel filer som genererats av samma händelsesession (kallas rollover-filer) kan du använda dialogrutan Sammanfoga utökade händelsefiler... för att öppna dem alla i loggboken.