Udostępnij za pośrednictwem


Tworzenie sesji zdarzeń z obiektem docelowym event_file w usłudze Azure Storage

Dotyczy: Azure SQL Database Azure SQL Managed Instance

Ogólne kroki opisane w tym przewodniku to:

  1. Utwórz konto usługi Azure Storage lub znajdź istniejące odpowiednie konto do użycia.
  2. Utwórz kontener na tym koncie magazynu.
  3. Udziel aparatowi bazy danych wymaganego dostępu do kontenera przy użyciu przypisania roli RBAC lub tokenu SAS.
  4. Utwórz poświadczenia w bazie danych lub wystąpieniu zarządzanym, w którym tworzysz sesję zdarzeń.
  5. Tworzenie, uruchamianie i używanie sesji zdarzeń.

Tworzenie konta magazynu i kontenera

Aby uzyskać szczegółowy opis sposobu tworzenia konta magazynu w usłudze Azure Storage, zobacz Tworzenie konta magazynu. Dowiesz się, jak utworzyć konto magazynu przy użyciu witryny Azure Portal, programu PowerShell, usługi Azure SQL, szablonu usługi ARM lub szablonu Bicep.

Zalecamy użycie konta, które:

  • Jest kontem Standard general-purpose v2 .
  • Ma typ nadmiarowości pasujący do nadmiarowości bazy danych Azure SQL Database, elastycznej puli lub wystąpienia zarządzanego, w którym są tworzone sesje zdarzeń.
  • Używa warstwy Hot dostępu do obiektu blob.
  • Znajduje się w tym samym regionie świadczenia usługi Azure co baza danych Azure SQL Database, elastyczna pula lub wystąpienie zarządzane.

Następnie utwórz kontener na tym koncie magazynu przy użyciu witryny Azure Portal. Kontener można również utworzyć przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

Zanotuj nazwy utworzonego konta magazynu i kontenera. Zostaną one zastosowane w poniższych krokach.

Udzielanie dostępu do kontenera

Aby odczytywać i zapisywać dane zdarzeń, aparat bazy danych wymaga określonego dostępu do kontenera. Ten dostęp można udzielić na jeden z dwóch sposobów, w zależności od wybranego typu uwierzytelniania:

  • Jeśli używasz tożsamości zarządzanej z uwierzytelnianiem firmy Microsoft Entra, przypiszesz rolę RBAC współautora danych obiektu blob usługi Storage dla kontenera do tożsamości zarządzanej serwera logicznego Azure SQL lub wystąpienia zarządzanego usługi Azure SQL.

    Uwaga

    Korzystanie z tożsamości zarządzanej z rozszerzonymi sesjami zdarzeń jest w wersji zapoznawczej.

  • W przypadku korzystania z uwierzytelniania opartego na wpisach tajnych należy utworzyć token SAS dla kontenera.

    Aby użyć tego typu uwierzytelniania, należy włączyć opcję Zezwalaj na dostęp do klucza magazynu. Aby uzyskać więcej informacji, zobacz Zapobieganie autoryzacji klucza współdzielonego dla konta usługi Azure Storage.

Udzielanie dostępu przy użyciu tożsamości zarządzanej

  1. W witrynie Azure Portal przejdź do strony Tożsamość serwera logicznego Azure SQL lub wystąpienia zarządzanego usługi Azure SQL i upewnij się, że przypisano tożsamość zarządzaną. Aby uzyskać więcej informacji, zobacz Tożsamości zarządzane w usłudze Microsoft Entra for Azure SQL.

  2. W witrynie Azure Portal przejdź do kontenera magazynu, w którym chcesz przechowywać dane zdarzeń. Na stronie Kontrola dostępu (IAM) wybierz pozycję Dodaj, aby przypisać rolę RBAC współautora danych obiektu blob usługi Storage do tożsamości zarządzanej serwera logicznego lub wystąpienia zarządzanego SQL.

    Jeśli serwer logiczny lub wystąpienie zarządzane SQL ma włączoną tożsamość zarządzaną przypisaną przez system, przypisz rolę do tej tożsamości. Jeśli tożsamość przypisana przez system jest wyłączona, ale istnieje co najmniej jedna tożsamość przypisana przez użytkownika, przypisz rolę do tożsamości przypisanej przez użytkownika wyznaczonej jako tożsamość podstawowa.

    Aby uzyskać więcej informacji, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.

  3. Utwórz poświadczenia, aby poinstruować aparat bazy danych, aby uwierzytelnił się w usłudze Azure Storage przy użyciu tożsamości zarządzanej dla określonego adresu URL kontenera.

    Utwórz poświadczenia o zakresie bazy danych. Za pomocą narzędzia klienckiego, takiego jak SSMS lub ADS, otwórz nowe okno zapytania, połącz się z bazą danych, w której tworzysz sesję zdarzeń, i wklej następującą partię języka T-SQL. Upewnij się, że masz połączenie z bazą danych użytkownika, a nie z bazą master danych.

    Uwaga

    Wykonanie następującej partii T-SQL wymaga CONTROL uprawnienia bazy danych, która jest przechowywana przez właściciela bazy danych (dbo), przez członków db_owner roli bazy danych i przez administratora serwera logicznego.

    /*
    (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://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    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';
    

    Przed wykonaniem tej partii wprowadź następującą zmianę:

    • We wszystkich trzech wystąpieniach https://<storage-account-name>.blob.core.windows.net/<container-name>elementu zastąp <storage-account-name> ciąg nazwą konta magazynu i zastąp <container-name> ciąg nazwą kontenera.

Udzielanie dostępu przy użyciu tokenu SAS

  1. W witrynie Azure Portal przejdź do utworzonego konta magazynu i kontenera. Wybierz kontener i przejdź do pozycji Ustawienia > Tokeny dostępu współdzielonego.

    Token SAS musi spełniać następujące wymagania:

    • Uprawnienia ustawione na Read, , DeleteWrite, List.
    • Czas rozpoczęcia i czas wygaśnięcia muszą obejmować okres istnienia sesji zdarzeń. Utworzony token SAS działa tylko w tym przedziale czasu.
    • Brak ograniczeń adresów IP.

    Wybierz przycisk Generuj token SAS i adres URL . Token SAS znajduje się w polu Token SAS obiektu blob. Możesz skopiować go do użycia w następnym kroku.

    Ważne

    Token SAS zapewnia dostęp do odczytu i zapisu w tym kontenerze. Traktuj je tak, jak w przypadku traktowania hasła lub innego wpisu tajnego.

    Zrzut ekranu przedstawiający ekran Tokeny dostępu współdzielonego dla kontenera usługi Azure Storage z wygenerowanym tokenem SAS dla przykładowego kontenera.

  2. Utwórz poświadczenia do przechowywania tokenu SAS.

    Przechowuj token SAS w poświadczeniu o zakresie bazy danych. Za pomocą narzędzia klienckiego, takiego jak SSMS lub ADS, otwórz nowe okno zapytania, połącz się z bazą danych, w której tworzysz sesję zdarzeń, i wklej następującą partię języka T-SQL. Upewnij się, że masz połączenie z bazą danych użytkownika, a nie z bazą master danych.

    Uwaga

    Wykonanie następującej partii T-SQL wymaga CONTROL uprawnienia bazy danych, która jest przechowywana przez właściciela bazy danych (dbo), przez członków db_owner roli bazy danych i przez administratora serwera logicznego.

    /*
    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://<storage-account-name>.blob.core.windows.net/<container-name>'
              )
        DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    The secret is the SAS token for the container. The Read, Write, and List permissions are set.
    */
    CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        SECRET = '<sas-token>';
    

    Przed wykonaniem tej partii wprowadź następujące zmiany:

    • We wszystkich trzech wystąpieniach https://<storage-account-name>.blob.core.windows.net/<container-name>elementu zastąp <storage-account-name> ciąg nazwą konta magazynu i zastąp <container-name> ciąg nazwą kontenera.
    • W klauzuli SECRET zastąp element <sas-token> tokenem SAS skopiowany w poprzednim kroku.

Tworzenie, uruchamianie i zatrzymywanie sesji zdarzeń

Po utworzeniu poświadczeń można utworzyć sesję zdarzeń. W przeciwieństwie do tworzenia poświadczeń tworzenie sesji zdarzeń nie wymaga CONTROL uprawnień. Po utworzeniu poświadczeń można tworzyć sesje zdarzeń, nawet jeśli masz bardziej ograniczone uprawnienia. Zobacz uprawnienia do określonych wymaganych uprawnień.

Aby utworzyć nową sesję zdarzeń w programie SSMS, rozwiń węzeł Zdarzenia rozszerzone. Ten węzeł znajduje się w folderze bazy danych w usłudze Azure SQL Database i w folderze Zarządzanie w usłudze Azure SQL Managed Instance. Kliknij prawym przyciskiem myszy folder Sesje , a następnie wybierz pozycję Nowa sesja.... Na stronie Ogólne wprowadź nazwę sesji, która znajduje się example-session w tym przykładzie. Na stronie Zdarzenia wybierz co najmniej jedno zdarzenie, które chcesz dodać do sesji. W tym przykładzie sql_batch_starting wybraliśmy zdarzenie.

Zrzut ekranu przedstawiający okno dialogowe Nowy program SSMS sesji przedstawiający stronę wyboru zdarzenia z wybranym zdarzeniem sql_batch_starting.

Na stronie Magazyn danych wybierz event_file typ docelowy i wklej adres URL kontenera magazynu w polu Adres URL magazynu. Wpisz ukośnik (/) na końcu tego adresu URL, a następnie nazwę pliku (obiektu blob). W naszym przykładzie nazwa obiektu blob to example-session.xel, a cały adres URL to https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.

Uwaga

W przypadku usługi SQL Managed Instance zamiast wklejania adresu URL kontenera magazynu na stronie Magazyn danych użyj przycisku Skrypt , aby utworzyć skrypt języka T-SQL sesji. Określ adres URL kontenera jako wartość argumentu filename , podobnie jak w poniższym przykładzie usługi SQL Managed Instance, i wykonaj skrypt, aby utworzyć sesję.

Zrzut ekranu przedstawiający okno dialogowe Nowy program SSMS sesji przedstawiający stronę wyboru magazynu danych z wybraną event_file docelową i wprowadzonym adresem URL magazynu.

Po skonfigurowaniu sesji możesz wybrać przycisk Skrypt , aby utworzyć skrypt języka T-SQL sesji, aby zapisać go później. Oto skrypt dla naszej przykładowej sesji:

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

Wybierz przycisk OK , aby utworzyć sesję.

W Eksplorator obiektów rozwiń folder Sesje, aby wyświetlić utworzoną sesję zdarzeń. Domyślnie sesja nie jest uruchamiana po jej utworzeniu. Aby rozpocząć sesję, kliknij prawym przyciskiem myszy nazwę sesji, a następnie wybierz pozycję Rozpocznij sesję. Później możesz go zatrzymać, wybierając podobnie pozycję Zatrzymaj sesję, gdy sesja jest uruchomiona.

Ponieważ partie T-SQL są wykonywane w tej bazie danych lub wystąpieniu zarządzanym, sesja zapisuje zdarzenia w example-session.xel obiekcie blob w kontenerze magazynu.

Aby zatrzymać sesję, kliknij ją prawym przyciskiem myszy w Eksplorator obiektów, a następnie wybierz polecenie Zatrzymaj sesję.

Wyświetlanie danych zdarzeń

Dane zdarzeń można wyświetlić w interfejsie użytkownika podglądu zdarzeń programu SQL Server Management Studio (SSMS), w którym można użyć filtrów i agregacji do analizowania przechwyconych danych. Aby uzyskać więcej informacji na temat korzystania z podglądu zdarzeń w programie SSMS, zobacz Wyświetlanie danych zdarzeń w programie SSMS.

Pobieranie plików xel z usługi Azure Storage

Napiwek

Jeśli używasz programu SSMS w wersji 19.2 lub nowszej, nie musisz pobierać xel plików zgodnie z opisem w tej sekcji. W tych wersjach program SSMS odczytuje xel pliki dla każdej sesji bezpośrednio z usługi Azure Storage. Aby uzyskać więcej informacji, zobacz blog Ulepszanie zdarzeń rozszerzonych w usłudze Azure SQL .

xel Pobierz obiekt blob dla sesji z kontenera magazynu i zapisz go jako plik lokalny. W witrynie Azure Portal znajdź użyte konto magazynu, wybierz pozycję Kontenery w obszarze Magazyn danych i wybierz kontener utworzony dla sesji zdarzeń. Obiekt blob sesji ma nazwę sesji jako pierwszą część nazwy z sufiksem liczbowym. Wybierz wielokropek (...), aby wyświetlić menu kontekstowe obiektu blob, a następnie wybierz pozycję Pobierz.

Możesz zainstalować Eksplorator usługi Azure Storage, aby pobrać wiele xel obiektów blob w ramach jednej operacji.

Po pobraniu xel pliku otwórz go w programie SSMS. W menu głównym programu SSMS przejdź do pozycji Plik i wybierz pozycję Otwórz. Jeśli masz jeden xel plik, wybierz pozycję Plik... i przejdź do pobranego pliku. Jeśli masz wiele xel plików wygenerowanych przez tę samą sesję zdarzeń (znaną jako pliki przerzucania), możesz użyć okna dialogowego Scal pliki rozszerzonych zdarzeń... w celu otwarcia wszystkich z nich w podglądzie zdarzeń.

Wyświetlanie danych zdarzeń przy użyciu języka T-SQL

Aby odczytać dane sesji zdarzeń przy użyciu języka T-SQL, użyj funkcji sys.fn_xe_file_target_read_file(). Aby użyć tej funkcji w bazie danych lub wystąpieniu zarządzanym innym niż ta, w której jest tworzona sesja zdarzeń, przyznaj dostęp do aparatu bazy danych w kontenerze magazynu za pomocą obiektów blob danych zdarzeń.

Aby uzyskać bardziej szczegółowy przewodnik, zobacz Tworzenie sesji zdarzeń w programie SSMS.