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

Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance

Ogólne kroki opisane w tym przewodniku to:

  1. Tworzenie konta usługi Azure Storage lub znajdowanie istniejącego odpowiedniego konta do użycia
  2. Tworzenie kontenera na tym koncie magazynu
  3. Tworzenie tokenu SAS z wymaganym dostępem dla tego kontenera
  4. Utwórz poświadczenie do przechowywania tokenu SAS w bazie danych lub wystąpieniu zarządzanym, w którym tworzysz sesję zdarzenia
  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 Hotdostę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 używanego konta magazynu i kontenera.

Tworzenie tokenu SAS

Aparat bazy danych z uruchomioną sesją zdarzeń wymaga określonego dostępu do kontenera magazynu. Przyznasz ten dostęp, tworząc token SAS dla kontenera. Ten token musi spełniać następujące wymagania:

  • rwl Uprawnienia (Read, Write, List)
  • Czas rozpoczęcia i czas wygaśnięcia, który obejmuje okres istnienia sesji zdarzeń
  • Brak ograniczeń adresów IP

W witrynie Azure Portal znajdź utworzone konto magazynu i kontener. Wybierz kontener i przejdź do Ustawienia > Tokeny dostępu współdzielonego. Ustaw pozycję Uprawnienia na Read, Write, Listi ustaw datę i godzinę rozpoczęcia i wygaśnięcia . Utworzony token SAS działa tylko w tym przedziale czasu.

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.

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

Tworzenie poświadczeń do przechowywania tokenu SAS

W usłudze Azure SQL Database używasz poświadczeń o zakresie bazy danych do przechowywania tokenu SAS. W usłudze Azure SQL Managed Instance należy użyć poświadczeń o zakresie serwera.

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://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';

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

  • We wszystkich trzech wystąpieniach https://exampleaccount4xe.blob.core.windows.net/xe-example-containerelementu zastąp exampleaccount4xe ciąg nazwą konta magazynu i zastąp xe-example-container ciąg nazwą kontenera.
  • Zastąp cały ciąg między pojedynczymi cudzysłowami w SECRET klauzuli tokenem SAS skopiowany w poprzednim kroku.

Tworzenie, uruchamianie i zatrzymywanie sesji zdarzeń

Po utworzeniu poświadczeń za pomocą tokenu SAS można utworzyć sesję zdarzeń. Tworzenie sesji zdarzeń nie wymaga CONTROL uprawnień. Jeśli poświadczenie z prawidłowym tokenem SAS już istnieje, możesz utworzyć sesje zdarzeń, nawet jeśli masz bardziej ograniczony zestaw uprawnień. 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.

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

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://exampleaccount4xe.blob.core.windows.net/xe-example-container/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ę.

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

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://exampleaccount4xe.blob.core.windows.net/xe-example-container/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 xe-example-container 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ń, utwórz poświadczenie, aby zapewnić aparatowi bazy danych dostęp do kontenera magazynu z obiektami blob zdarzeń.

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