Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Fabric
Die allgemeinen Schritte in dieser exemplarischen Vorgehensweise sind:
- Erstellen Sie ein Azure Storage-Konto, oder suchen Sie nach einem vorhandenen geeigneten Konto für die Nutzung.
- Erstellen Sie einen Container in diesem Speicherkonto.
- Gewähren Sie der Datenbank-Engine den erforderlichen Zugriff auf den Container mithilfe einer RBAC-Rollenzuweisung oder eines SAS-Tokens.
- Erstellen Sie ein Benutzerkonto in der Datenbank oder Instanz, wo Sie die Ereignissitzung erstellen.
- Erstellen, starten und verwenden Sie eine Ereignissitzung.
Erstellen eines Speicherkontos und Containers
Eine detaillierte Beschreibung zum Erstellen eines Speicherkontos in Azure Storage finden Sie unter Erstellen eines Speicherkontos. Sie erfahren, wie Sie mithilfe von Azure-Portal, PowerShell, Azure SQL, einer ARM-Vorlage oder einer Bicep-Vorlage ein Speicherkonto erstellen.
Verwenden Sie ein Konto, das:
- Ist ein
Standard general-purpose v2-Konto. - Weist den Redundanztyp auf, der der Redundanz der Azure SQL-Datenbank oder des elastischen Pools entspricht, in denen Ereignissitzungen erstellt werden.
- Verwenden Sie für lokal redundante Azure SQL-Ressourcen LRS, GRS oder RA-GRS. Verwenden Sie für zonenredundante Azure SQL-Ressourcen ZRS, GZRS oder RA-GZRS. Weitere Informationen finden Sie unter Azure Storage-Redundanz.
- Verwendet die
Hot-Blob-Zugriffsebene. - Befindet sich in derselben Azure-Region wie die Azure SQL-Datenbank, der elastische Pool, die Fabric-Kapazität oder die verwaltete SQL-Instanz.
- Der hierarchische Namespace ist nicht aktiviert.
Als nächstes erstellen Sie einen Container in diesem Speicherkonto mit Azure-Portal. Sie können auch einen Container mit PowerShell oder mithilfe der Azure CLI erstellen.
Notieren Sie die Namen des Speicherkontos und des Containers, die Sie erstellt haben. Sie verwenden sie in den folgenden Schritten.
Gewähren Sie zunächst Zugriff auf den Container. Zum Lesen und Schreiben von Ereignisdaten benötigt die Datenbank-Engine einen bestimmten Zugriff auf den Container. Je nach gewähltem Authentifizierungstyp können Sie diesen Zugriff auf eine von zwei Arten gewähren:
Wenn Sie die verwaltete Identität mit Microsoft Entra-Authentifizierung verwenden, weisen Sie verwalteten Identität des logischen Azure SQL-Servers oder Azure SQL Managed Instance die RBAC-Rolle Mitwirkender an Storage-Blobdaten für den Container zu.
Wenn Sie die geheimnisbasierte Authentifizierung verwenden, erstellen Sie ein SAS-Token für den Container.
Damit Sie diesen Authentifizierungstyp verwenden können, muss die Option Zugriff auf Speicherkontoschlüssel erlauben aktiviert sein. Weitere Informationen finden Sie unter Verhindern der Autorisierung mit gemeinsam verwendeten Schlüsseln für ein Azure Storage-Konto.
Gewähren des Zugriffs mithilfe einer verwalteten Identität
Navigieren Sie im Azure-Portal zur Seite Identität des logischen Azure SQL-Servers oder der Instanz von Azure SQL Managed Instance, und stellen Sie sicher, dass eine verwaltete Identität zugewiesen ist. Weitere Informationen finden Sie unter Verwaltete Identitäten in Microsoft Entra für Azure SQL.
Navigieren Sie im Azure-Portal zu dem Speichercontainer, in dem Ereignisdaten gespeichert werden sollen. Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Option Hinzufügen aus, um der verwalteten Identität des logischen Servers oder SQL Managed Instance die RBAC-Rolle Mitwirkender an Storage-Blobdaten zuzuweisen.
Wenn für den logischen Server oder SQL Managed Instance die systemseitig zugewiesene verwaltete Identität aktiviert ist, weisen Sie die Rolle dieser Identität zu. Wenn die systemseitig zugewiesene Identität deaktiviert ist, aber mindestens eine benutzerseitig zugewiesene Identität vorhanden ist, weisen Sie die Rolle der benutzerseitig zugewiesenen Identität zu, die als primäre Identität festgelegt ist.
Weitere Informationen finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.
Erstellen Sie Anmeldeinformationen, um die Datenbank-Engine anzuweisen, sich bei Azure Storage mithilfe der verwalteten Identität für eine bestimmte Container-URL zu authentifizieren.
Erstellen Sie in Azure SQL-Datenbank und SQL-Datenbank in Microsoft Fabric eine im Datenbankbereich festgelegte Anmeldeinformation. Öffnen Sie mithilfe eines Clienttools wie SSMS ein neues Abfragefenster, stellen Sie eine Verbindung mit der Datenbank her, in der Sie die Ereignissitzung erstellen, und fügen Sie den folgenden T-SQL-Batch ein. Stellen Sie sicher, dass Sie mit Ihrer Benutzerdatenbank und nicht mit der
master-Datenbank verbunden sind.Note
Zum Ausführen des folgenden T-SQL-Batches ist die
CONTROLDatenbankberechtigung erforderlich. Standardmäßig wird die Berechtigung vom Datenbankbesitzer (dbo), von den Mitgliedern derdb_ownerDatenbankrolle und vom Administrator des logischen Servers gehalten./* (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';
Bevor Sie diesen Batch ausführen, nehmen Sie die folgende Änderung vor:
- Ersetzen Sie bei allen drei Vorkommen von
https://<storage-account-name>.blob.core.windows.net/<container-name><storage-account-name>durch den Namen Ihres Speicherkontos und<container-name>durch den Namen Ihres Containers.
Gewähren des Zugriffs mithilfe eines SAS-Tokens
Navigieren Sie im Azure-Portal zu dem Speicherkonto und Container, die Sie erstellt haben. Wählen Sie den Container aus, und navigieren Sie zu Einstellungen > freigegebene Zugriffstoken.
Das SAS-Token muss die folgenden Anforderungen erfüllen:
-
Berechtigungen müssen auf
Read,Write,Delete,Listfestgelegt sein. - Die Startzeit und die Ablaufzeit müssen die Lebensdauer der Ereignissitzung umfassen. Das von Ihnen erstellte SAS-Token funktioniert nur innerhalb dieses Zeitintervalls.
- Keine Einschränkungen für IP-Adressen haben.
Wählen Sie die Schaltfläche SAS-Token und -URL generieren aus. Das SAS-Token befindet sich im Blob SAS-Token-Feld. Sie können es kopieren, um ihn im nächsten Schritt verwenden.
Important
Das SAS-Token bietet Lese- und Schreibzugriff auf diesen Container. Behandeln Sie es so, als würde es sich um ein Kennwort oder ein anderes Geheimnis handeln.
-
Berechtigungen müssen auf
Erstellen Sie Anmeldeinformationen zum Speichern des SAS-Tokens.
Speichern Sie als Nächstes das SAS-Token in datenbankbezogenen Anmeldeinformationen. Öffnen Sie mithilfe eines Clienttools wie SSMS ein neues Abfragefenster, stellen Sie eine Verbindung mit der Datenbank her, in der Sie die Ereignissitzung erstellen, und fügen Sie den folgenden T-SQL-Batch ein. Stellen Sie sicher, dass Sie mit Ihrer Benutzerdatenbank und nicht mit der
master-Datenbank verbunden sind.Note
Zum Ausführen des folgenden T-SQL-Batches ist die
CONTROLDatenbankberechtigung erforderlich. Standardmäßig wird die Berechtigung vom Datenbankbesitzer (dbo), von den Mitgliedern derdb_ownerDatenbankrolle und vom Administrator des logischen Servers gehalten./* 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>';Bevor Sie diesen Batch ausführen, nehmen Sie die folgenden Änderungen vor:
- Ersetzen Sie bei allen drei Vorkommen von
https://<storage-account-name>.blob.core.windows.net/<container-name><storage-account-name>durch den Namen Ihres Speicherkontos und<container-name>durch den Namen Ihres Containers. - Ersetzen Sie in der
SECRET-Klausel<sas-token>durch das SAS-Token, das Sie im vorherigen Schritt kopiert haben.
- Ersetzen Sie bei allen drei Vorkommen von
Erstellen, Starten und Beenden einer Ereignissitzung
Nachdem die Anmeldeinformationen erstellt wurden, können Sie die Ereignissitzung erstellen. Im Gegensatz zum Erstellen der Anmeldeinformationen erfordert das Erstellen einer Ereignissitzung nicht die Berechtigung CONTROL. Nachdem die Anmeldeinformationen erstellt wurden, können Sie Ereignissitzungen auch dann erstellen, wenn Sie über eingeschränktere Berechtigungen verfügen. Informationen zu den erforderlichen Berechtigungen finden Sie unter "Berechtigungen ".
Stellen Sie in SQL Server Management Studio (SSMS) eine Verbindung mit dem logischen Azure SQL-Datenbankserver her.
Erweitern Sie den Knoten "Erweiterte Ereignisse " unter dem Ordner "Verwaltung ".
Klicken Sie mit der rechten Maustaste auf den Ordner "Sitzungen ", und wählen Sie "Neue Sitzung" aus.
Geben Sie auf der Seite "Allgemein " einen Namen für die Sitzung ein, der für das folgende Codebeispiel verwendet wird
example-session.Wählen Sie auf der Seite Ereignisse ein oder mehrere Ereignisse aus, die der Sitzung hinzugefügt werden sollen. In diesem Beispiel wählen wir das Ereignis
sql_batch_startingaus.Wählen Sie auf der Seite
event_file" als Zieltyp aus.- Wählen Sie für eine lokale Ereignisdatei das lokale Dateiziel aus.
- Fügen Sie für ein in Azure Storage gespeichertes Ereignisdatei-BLOB die URL des Speichercontainers in das Feld "Speicher-URL " ein. Geben Sie am Ende dieser URL einen Schrägstrich (
/) gefolgt von dem Namen der Datei (BLOB) ein. Beispiel:https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
Wählen Sie auf der Seite Datenspeicher
event_fileals Zieltyp aus, und fügen Sie die URL des Speichercontainers in das Feld Speicher-URL ein. Geben Sie am Ende dieser URL einen Schrägstrich (/) gefolgt von dem Namen der Datei (BLOB) ein. In unserem Beispiel lautet der BLOB-Nameexample-session.xelund die gesamte URLhttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.Note
Verwenden Sie für SQL Managed Instance anstelle der Speichercontainer-URL auf der Seite „Datenspeicher“ die Schaltfläche „Skript“, um ein T-SQL-Skript der Sitzung zu erstellen. Geben Sie die Container-URL als Wert für das
filename-Argument an, ähnlich wie das folgende Beispiel einer SQL Managed Instance, und führen Sie das Skript aus, um die Sitzung zu erstellen.Nachdem die Sitzung konfiguriert ist, können Sie die Schaltfläche „Skript“ auswählen, um ein T-SQL-Skript der Sitzung zu erstellen, um sie für später zu speichern. Hier ist das Skript für unsere Beispielsitzung:
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
Wählen Sie OK aus, um die Sitzung zu erstellen.
Erweitern Sie in Objekt-Explorer den Ordner Sitzungen, um die von Ihnen erstellte Ereignissitzung anzuzeigen. Standardmäßig wird die Sitzung beim Erstellen nicht gestartet. Um die Sitzung zu starten, klicken Sie mit der rechten Maustaste auf den Sitzungsnamen, und wählen Sie Sitzung starten aus. Sie können sie später beenden, indem Sie auf ähnliche Weise Sitzung beenden auswählen, sobald die Sitzung ausgeführt wird.
Während T-SQL-Batches ausgeführt werden, schreibt die Sitzung Ereignisse in das example-session.xel Blob im Speichercontainer.
Um die Sitzung zu beenden, klicken Sie in Objekt-Explorer mit der rechten Maustaste darauf, und wählen Sie Sitzung beenden aus.
Problembehandlung bei Ereignissitzungen mit einem event_file-Ziel in Azure Storage
Die folgende Liste enthält Fehler, die beim Starten einer erweiterten Ereignissitzung auftreten können, die Azure Storage verwendet, mit den möglichen Erklärungen für den Fehler.
-
Fehler 5 des Betriebssystems: "Zugriff verweigert".
- Bei Verwendung der verwalteten Identitätsauthentifizierung:
- Die vom Datenbankmodul verwendete verwaltete Identität verfügt nicht über die erforderliche RBAC-Rollenzuweisung. Weitere Informationen finden Sie unter Zugriff gewähren mithilfe der verwalteten Identität.
- Die Speicherkontofirewall ist aktiviert, und eine Ausnahme, mit der vertrauenswürdige Azure-Dienste auf das Speicherkonto zugreifen können, ist ebenfalls aktiviert, aber eine
Microsoft.Sql/serversRessourceninstanz für den logischen Server wurde nicht zur Liste der Ressourceninstanzen hinzugefügt, die Zugriff gewährt haben. Weitere Informationen finden Sie unter Gewähren des Zugriffs von Azure-Ressourceninstanzen. - Wenn Sie einen Netzwerksicherheitsperimeter mit erzwungenem Modus verwenden, befinden sich die Datenbank und das Speicherkonto nicht im gleichen Umkreis.
- Bei Verwendung der SAS-Tokenauthentifizierung:
- Die Firewall des Speicherkontos ist aktiviert. Dies wird für Ereignissitzungen, die die SAS-Tokenauthentifizierung verwenden, nicht unterstützt.
- Das SAS-Token verfügt nicht über ausreichende Berechtigungen oder ist abgelaufen. Weitere Informationen finden Sie unter Gewähren des Zugriffs mithilfe eines SAS-Tokens.
- Wenn Sie einen Netzwerksicherheitsperimeter mit erzwungenem Modus verwenden, sind Zugriffsregeln nicht vorhanden, um uneingeschränkte ausgehende Kommunikation aus der Datenbank zuzulassen und die uneingeschränkte eingehende Kommunikation mit dem Speicherkonto zu ermöglichen.
- Bei Verwendung der verwalteten Identitätsauthentifizierung:
-
Fehler 86 des Betriebssystems: "Das angegebene Netzwerkkennwort ist nicht korrekt.".
- Es gibt keine datenbankbezogenen Anmeldeinformationen (für Azure SQL-Datenbank) oder serverbezogenen Anmeldeinformationen (für Azure SQL Managed Instance oder SQL Server) mit dem Namen, der mit der BLOB-Container-URL übereinstimmt. Weitere Informationen finden Sie in den Beispielen zum Gewähren des Zugriffs mit verwalteter Identität oder Gewähren des Zugriffs mithilfe eines SAS-Tokens.
- Der Name der Anmeldeinformationen endet mit einem Schrägstrich (
/). Der Name der Anmeldeinformationen sollte mit dem Containernamen enden und nicht den abschließenden Schrägstrich enthalten.
-
Fehler 3 des Betriebssystems: 'Das System kann den angegebenen Pfad nicht finden.'
- Der in der BLOB-Container-URL angegebene Container ist nicht vorhanden.
-
Fehler 13 des Betriebssystems: "Die Daten sind ungültig.".
- Es gibt eine Unveränderlichkeitsrichtlinie für den BLOB-Container. Unveränderlicher Speicher wird für Ereignissitzungen nicht unterstützt.
- Das Speicherkonto hat den hierarchischen Namensraum aktiviert. Speicherkonten mit aktivierten hierarchischen Namespaces werden für Ereignissitzungen nicht unterstützt.
Anzeigen von Ereignisdaten
Sie können Ereignisdaten in der Benutzeroberfläche der SQL Server Management Studio (SSMS)-Ereignisanzeige anzeigen, in der Sie Filter und Aggregationen verwenden können, um die erfassten Daten zu analysieren. Weitere Informationen zur Verwendung der Ereignisanzeige in SSMS finden Sie unter Anzeigen von Ereignisdaten in SQL Server Management Studio.
Anzeigen von Ereignisdaten mit T-SQL
Verwenden Sie die funktion sys.fn_xe_file_target_read_file() zum Lesen von Ereignissitzungsdaten mit T-SQL. Um diese Funktion in einer Datenbank oder Instanz zu verwenden, die sich von der Datenbank unterscheidet, in der die Ereignissitzung erstellt wird, müssen Sie zugriff auf den Container auf das Datenbankmodul im Speichercontainer mit den Ereignisdatenblobs gewähren. Siehe "Gewähren des Zugriffs mithilfe der verwalteten Identität " oder "Gewähren des Zugriffs mithilfe eines SAS-Tokens".
Eine ausführlichere exemplarische Vorgehensweise finden Sie unter Erstellen einer Ereignissitzung in SSMS.
Dateien aus dem Azure Blob Storage herunterladen
Tip
Wenn Sie SSMS v19.2 oder höher verwenden, müssen Sie keine Dateien herunterladen xel, wie in diesem Abschnitt beschrieben. In diesen Versionen liest SSMS die xel Dateien für jede Sitzung direkt aus dem Azure Storage-Container. Weitere Informationen finden Sie im Blog Verbessern erweiterter Ereignisse in Azure SQL.
Laden Sie dazu den xel-BLOB für die Sitzung aus dem Speichercontainer herunter, und speichern Sie es als lokale Datei. Suchen Sie in Azure-Portal das verwendete Speicherkonto, wählen Sie Container unter Datenspeicher aus, und wählen Sie den Container aus, den Sie für Ihre Ereignissitzung erstellt haben. Der Blob für die Sitzung weist den Sitzungsnamen als ersten Teil seines Namens mit einem numerischen Suffix auf. Wählen Sie die Auslassungspunkte (...) aus, um das Kontextmenü für das Blob anzuzeigen, und wählen Sie Herunterladen aus.
Sie können Azure Storage-Explorer installieren, um mehrere xel-Blobs in einem Vorgang herunterzuladen.
Sobald die xel-Datei heruntergeladen wurde, öffnen Sie sie in SSMS. Wechseln Sie im Menü „SSMS Standard“ zu Datei, und wählen Sie Öffnen aus. Wenn Sie über eine einzelne xel-Datei verfügen, wählen Sie Datei aus, und navigieren Sie zu der Datei, die Sie heruntergeladen haben. Wenn mehrere xel-Dateien von derselben Ereignissitzung generiert wurden (auch als Rolloverdateien bezeichnet), können Sie das Dialogfeld Erweiterte Ereignisdateien zusammenführen verwenden, um alle Dateien in der Ereignisanzeige zu öffnen.