Dela via


Skapa en händelsesession med ett event_file mål i Azure Storage

Gäller för:Azure SQL DatabaseAzure SQL Managed Instance

De övergripande stegen i den här genomgången är:

  1. Skapa ett Azure Storage-konto eller hitta ett befintligt lämpligt konto att använda
  2. Skapa en container i det här lagringskontot
  3. Skapa en SAS-token med nödvändig åtkomst för den här containern
  4. Skapa en autentiseringsuppgift för att lagra SAS-token i databasen eller den hanterade instansen där du skapar händelsesessionen
  5. 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.

Vi rekommenderar att du använder ett konto som:

  • Är ett Standard general-purpose v2 konto.
  • Har sin redundanstyp som matchar redundansen för Azure SQL-databasen, den elastiska poolen eller den hanterade instansen där händelsesessioner skapas.
  • HotAnvänder blobåtkomstnivån.
  • Finns i samma Azure-region som Azure SQL-databasen, elastisk pool eller hanterad instans.

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 använder.

Skapa en SAS-token

Databasmotorn som kör händelsesessionen behöver specifik åtkomst till lagringscontainern. Du beviljar den här åtkomsten genom att skapa en SAS-token för containern. Denna token måste uppfylla följande krav:

  • Ha behörigheterna rwl (Read, Write, List)
  • Ha starttid och förfallotid som omfattar händelsesessionens livslängd
  • Har inga IP-adressbegränsningar

Leta reda på lagringskontot och containern som du skapade i Azure-portalen. Välj containern och gå till Inställningar > Token för delad åtkomst. Ange Behörigheter till Read, Write, Listoch ange datum och tid för start och förfallodatum . DEN SAS-token som du skapar fungerar bara inom det här tidsintervallet.

Välj knappen Generera SAS-token och URL. SAS-token finns i rutan Blob SAS-token . Du kan kopiera den som ska användas i nästa steg.

Viktigt!

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.

Screenshot of the Shared Access Tokens screen for an Azure Storage container, with a generated SAS token for an example container.

Skapa en autentiseringsuppgift för att lagra SAS-token

I Azure SQL Database använder du en databasomfattande autentiseringsuppgift för att lagra SAS-token. I Azure SQL Managed Instance använder du en autentiseringsuppgift med serveromfattning.

Lagra SAS-token i en databasomfattande autentiseringsuppgift. Med hjälp av ett klientverktyg som SSMS eller ADS ö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 master databasen.

Kommentar

För att köra följande T-SQL-batch krävs databasbehörigheten CONTROL , som innehas av databasägaren (dbo), av medlemmarna i databasrollen db_owner och 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.
The name of the credential must match the URL of the blob container.
*/
IF EXISTS (
          SELECT 1
          FROM sys.database_credentials
          WHERE name = 'https://exampleaccount4xe.blob.core.windows.net/xe-example-container'
          )
    DROP DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container];

/*
The secret is the SAS token for the container. The Read, Write, and List permissions are set.
*/
CREATE DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'sp=rwl&st=2023-10-17T23:28:32Z&se=2023-10-18T07:28:32Z&spr=https&sv=2022-11-02&sr=c&sig=REDACTED';

Innan du kör den här batchen gör du följande ändringar:

  • I alla tre förekomsterna av https://exampleaccount4xe.blob.core.windows.net/xe-example-containerersätter du exampleaccount4xe med namnet på ditt lagringskonto och ersätter xe-example-container med namnet på containern.
  • Ersätt hela strängen mellan de enkla citattecknarna SECRET i -satsen med den SAS-token som du kopierade i föregående steg.

Skapa, starta och stoppa en händelsesession

När autentiseringsuppgifterna med SAS-token har skapats kan du skapa händelsesessionen. Att skapa en händelsesession kräver inte behörigheten CONTROL . Om autentiseringsuppgifterna med rätt SAS-token redan finns kan du skapa händelsesessioner även om du har en mer begränsad uppsättning behörigheter. Se behörigheter för de specifika behörigheter som behövs.

Om du vill skapa en ny händelsesession i SSMS expanderar du noden Utökade händelser . Den här noden finns under databasmappen i Azure SQL Database och under mappen Hantering i Azure SQL Managed Instance. Högerklicka på mappen Sessioner och välj Ny session.... På sidan Allmänt anger du ett namn för sessionen, som finns example-session i det här exemplet. 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 .

Screenshot of the New Session SSMS dialog showing the event selection page with the sql_batch_starting event selected.

På sidan Datalagring väljer du event_file som 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 är example-session.xelblobnamnet , och hela URL:en är https://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel.

Kommentar

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 filename argumentet, liknande SQL Managed Instance-exemplet nedan, och kör skriptet för att skapa sessionen.

Screenshot of the New Session SSMS dialog showing the data storage selection page with an event_file target selected and an entered storage URL.

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://exampleaccount4xe.blob.core.windows.net/xe-example-container/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 i den här databasen eller den hanterade instansen skriver sessionen händelser till bloben example-session.xel i xe-example-container lagringscontainern.

Om du vill stoppa sessionen högerklickar du på den i Object Explorer och väljer Stoppa session.

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

Ladda ned xel-filer från Azure Storage

Dricks

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 xel SSMS filerna för varje session direkt från Azure Storage. 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.

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 hanterad instans än den där händelsesessionen skapas skapar du en autentiseringsuppgift som ger databasmotorn åtkomst till lagringscontainern med händelseblobbarna.

En mer detaljerad genomgång finns i Skapa en händelsesession i SSMS.