Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w Fabric
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świadczenie w bazie danych lub wystąpieniu, w którym tworzysz sesję zdarzenia.
- 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.
Użyj 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
Hotdostępu do obiektu blob. - Znajduje się w tym samym regionie świadczenia usługi Azure co baza danych Azure SQL Database, elastyczna pula, pojemność Fabric lub wystąpienie zarządzane SQL.
- Nie ma włączonej hierarchicznej przestrzeni nazw .
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.
Najpierw przyznaj dostęp 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.
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.
W Azure SQL Database i SQL Database w Microsoft Fabric, utwórz poświadczenie o zakresie bazy danych. Za pomocą narzędzia klienckiego, takiego jak program SSMS, 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ą
masterdanych.Note
Wykonanie następującej partii T-SQL wymaga
CONTROLuprawnienia do bazy danych. Domyślnie uprawnienie jest przechowywane przez właściciela bazy danych (dbo), przez członkówdb_ownerroli bazy danych i przez administratora serwera logicznego./* (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';
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
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, ,WriteDelete,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.
Important
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 program SSMS, 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ą
masterdanych.Note
Wykonanie następującej partii T-SQL wymaga posiadania uprawnień do bazy danych
CONTROL. Domyślnie uprawnienie jest przechowywane przez właściciela bazy danych (dbo), przez członkówdb_ownerroli 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 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>';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
SECRETzastą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 , aby uzyskać określone wymagane uprawnienia.
W programie SQL Server Management Studio (SSMS) połącz się z serwerem logicznym usługi Azure SQL Database.
Rozwiń węzeł Zdarzenia rozszerzone w folderze Zarządzanie .
Kliknij prawym przyciskiem myszy folder Sesje , a następnie wybierz pozycję Nowa sesja....
Na stronie Ogólne wprowadź nazwę sesji, która będzie używana w następującym przykładzie kodu.
Na stronie Zdarzenia wybierz co najmniej jedno zdarzenie, które chcesz dodać do sesji. W tym przykładzie
sql_batch_startingwybraliśmy zdarzenie.Na stronie Magazyn danych wybierz
event_filejako typ docelowy.- Dla lokalnego pliku zdarzenia wybierz docelowy lokalny plik.
- Aby uzyskać dostęp do pliku zdarzeń jako obiektu blob przechowywanego w Azure Storage, wklej adres URL kontenera magazynowego w polu Adres URL usługi Storage. Wpisz ukośnik (
/) na końcu tego adresu URL, a następnie nazwę pliku (obiektu blob). Na przykładhttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
Na stronie Magazyn danych wybierz
event_filetyp 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 toexample-session.xel, a cały adres URL tohttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.Note
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.
Podczas wykonywania partii T-SQL sesja zapisuje zdarzenia w obiekcie blob w kontenerze magazynowym.
Aby zatrzymać sesję, kliknij ją prawym przyciskiem myszy w Eksplorator obiektów, a następnie wybierz polecenie Zatrzymaj sesję.
Rozwiązywanie problemów z sesjami zdarzeń z obiektem docelowym event_file w usłudze Azure Storage
Poniższa lista zawiera błędy, które mogą wystąpić podczas uruchamiania rozszerzonej sesji zdarzeń korzystającej z usługi Azure Storage z możliwymi wyjaśnieniami błędu.
-
System operacyjny zwrócił błąd 5: "Odmowa dostępu".
- W przypadku korzystania z uwierzytelniania tożsamości zarządzanej:
- Tożsamość zarządzana używana przez silnik bazy danych nie ma wymaganego przypisania roli RBAC. Aby uzyskać więcej informacji, zobacz Jak udzielić dostępu za pomocą tożsamości zarządzanej.
-
Zapora konta przechowywania jest włączona, a wyjątek zezwalający zaufanym usługom Azure na dostęp do konta jest również aktywny, jednak
Microsoft.Sql/serverswystąpienie zasobu dla serwera logicznego nie zostało dodane do listy wystąpień zasobów, którym udzielono dostępu. Aby uzyskać więcej informacji, zobacz Udostępnianie dostępu z instancji zasobów Azure. - Jeśli używasz obwodu zabezpieczeń sieci z trybem wymuszonym, baza danych i konto magazynu nie są w tym samym obwodzie.
- W przypadku korzystania z uwierzytelniania tokenu SAS:
- Zapora konta magazynu jest włączona. Nie jest to obsługiwane w przypadku sesji zdarzeń korzystających z uwierzytelniania tokenu SAS.
- Token SAS nie ma wystarczających uprawnień lub wygasł. Aby uzyskać więcej informacji, zobacz Udzielanie dostępu przy użyciu tokenu SAS.
- Jeśli używasz obwodu zabezpieczeń sieci w trybie wymuszonym, nie ma wprowadzonych reguł dostępu umożliwiających nieograniczoną komunikację wychodzącą z baz danych oraz nieograniczoną komunikację przychodzącą do konta magazynu.
- W przypadku korzystania z uwierzytelniania tożsamości zarządzanej:
-
System operacyjny zwrócił błąd 86: "Określone hasło sieciowe nie jest poprawne".
- Brak poświadczeń o zakresie bazy danych (dla usługi Azure SQL Database) ani poświadczeń o zakresie serwera (dla usługi Azure SQL Managed Instance lub SQL Server) o nazwie pasującej do adresu URL Kontenera obiektów Blob. Aby uzyskać więcej informacji, zobacz przykłady udzielania dostępu przy użyciu tożsamości zarządzanej lub Udzielanie dostępu przy użyciu tokenu SAS.
- Nazwa poświadczenia kończy się ukośnikiem (
/). Nazwa poświadczeń powinna kończyć się nazwą kontenera, która nie zawiera ukośnika końcowego.
-
System operacyjny zwrócił błąd 3: "System nie może odnaleźć określonej ścieżki".
- Kontener określony w adresie URL kontenera obiektów blob nie istnieje.
-
System operacyjny zwrócił błąd 13: "Dane są nieprawidłowe".
- W kontenerze obiektów blob istnieją zasady niezmienności . Niezmienne przechowywanie nie jest obsługiwane w przypadku sesji zdarzeń.
- Konto magazynu ma włączoną hierarchiczną przestrzeń nazw . Konta magazynowe z włączoną hierarchiczną przestrzenią nazw nie są obsługiwane w sesjach zdarzeń.
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 SQL Server Management Studio.
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 instancji innej niż ta, w której jest tworzona sesja zdarzenia, należy przyznać dostęp silnikowi bazy danych do kontenera magazynu z danymi blobów zdarzeń. Zobacz Udzielanie dostępu przy użyciu tożsamości zarządzanej lub Udzielanie dostępu przy użyciu tokenu SAS.
Aby uzyskać bardziej szczegółowy przewodnik, zobacz Tworzenie sesji zdarzeń w programie SSMS.
Pobieranie plików xel z usługi Azure Storage
Tip
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 pliki xel dla każdej sesji bezpośrednio z kontenera 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ń.