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:
- Utwórz konto usługi Azure Storage lub znajdź istniejące odpowiednie konto do użycia.
- Utwórz kontener na tym koncie magazynu.
- Udziel aparatowi bazy danych wymaganego dostępu do kontenera przy użyciu przypisania roli RBAC lub tokenu SAS.
- Utwórz poświadczenia w bazie danych lub wystąpieniu zarządzanym, w którym tworzysz sesję zdarzeń.
- 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ń.
- W przypadku lokalnie nadmiarowych zasobów usługi Azure SQL użyj magazynu LRS, GRS lub RA-GRS. W przypadku strefowo nadmiarowych zasobów usługi Azure SQL użyj magazynu ZRS, GZRS lub RA-GZRS. Aby uzyskać więcej informacji, zobacz Nadmiarowość usługi Azure Storage.
- 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
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.
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.
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ówdb_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.
- We wszystkich trzech wystąpieniach
Udzielanie dostępu przy użyciu tokenu SAS
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
, ,Delete
Write
,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.
- Uprawnienia ustawione na
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ówdb_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.
- We wszystkich trzech wystąpieniach
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.
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ę.
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.