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:SQL Server
Azure SQL Managed Instance
Erstellt ein Serverüberwachungsobjekt mithilfe von SQL Server Audit. Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine).
Transact-SQL-Syntaxkonventionen
Syntax
CREATE SERVER AUDIT audit_name
{
TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
[ WITH ( <audit_options> [ , ...n ] ) ]
[ WHERE <predicate_expression> ]
}
[ ; ]
<file_options>::=
{
FILEPATH = 'os_file_path'
[ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]
[ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]
[ , RESERVE_DISK_SPACE = { ON | OFF } ]
}
<audit_options> ::=
{
[ QUEUE_DELAY = integer ]
[ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]
[ , AUDIT_GUID = uniqueidentifier ]
[ , OPERATOR_AUDIT = { ON | OFF } ]
}
<predicate_expression> ::=
{
[ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ]
[ , ...n ]
}
<predicate_factor>::=
event_field_name { = | < > | != | > | >= | < | <= | LIKE } { number | 'string' }
Arguments
audit_name
Der Name des Audits. Darf keine Leerzeichen in SQL Server 2019 (15.x) und früheren Versionen enthalten.
TO { DATEI | ANWENDUNGSPROTOKOLL | SICHERHEITSPROTOKOLL | URL | EXTERER_MONITOR }
Legt den Speicherort des Überwachungsziels fest. Die Optionen sind eine Binärdatei, das Windows-Anwendungsprotokoll oder das Windows-Sicherheitsprotokoll. SQL Server kann nicht in das Windows-Sicherheitsprotokoll schreiben, ohne zusätzliche Einstellungen in Windows zu konfigurieren. Weitere Informationen finden Sie unter Schreiben von SQL-Serverüberwachungsereignissen in das Sicherheitsprotokoll.
Das URL-Ziel wird nicht für SQL Server unterstützt.
Important
In Azure SQL Managed Instance funktioniert die SQL-Überwachung auf Serverebene. Als Speicherorte ist nur URL oder EXTERNAL_MONITOR möglich.
DATEIPFAD = 'os_file_path'
Der Pfad des Überwachungsprotokolls. Der Dateiname wird auf der Grundlage des Überwachungsnamens und des Überwachungs-GUID generiert. Wenn dieser Pfad ungültig ist, wird die Überwachung nicht erstellt.
Das FILEPATH-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt. Stattdessen müssen Sie PATH verwenden.
MAXSIZE = max_size
Gibt die maximale Größe an, die die Überwachungsdatei annehmen kann. Der Wert von max_size muss eine ganze Zahl gefolgt von MB, GB, TB oder UNLIMITED sein. Die minimale Größe, die Sie für max_size angeben können, beträgt 2 MB, und die maximale Größe beträgt 2.147.483.647 TB. Wird UNLIMITED angegeben, kann die Größe der Datei so lange zunehmen, bis auf dem Datenträger kein Speicherplatz mehr verfügbar ist. (0 steht ebenfalls für UNLIMITED.) Die Angabe eines Werts kleiner als 2 MB löst den Fehler MSG_MAXSIZE_TOO_SMALL aus. Der Standardwert ist UNLIMITED.
Das MAXSIZE-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt.
MAX_ROLLOVER_FILES = { Ganzzahl | UNBEGRENZT }
Gibt die maximale Anzahl der Dateien an, die im Dateisystem zusätzlich zur aktuellen Datei beibehalten werden. Der MAX_ROLLOVER_FILES-Wert muss eine ganze Zahl oderUNLIMITED sein. Der Standardwert ist UNLIMITED. Dieser Parameter wird ausgewertet, sobald die Überwachung neu gestartet wird (z.B. wenn die Instanz von Datenbank-Engine neu gestartet oder die Überwachung deaktiviert und wieder aktiviert wird) oder wenn eine neue Datei benötigt wird, da MAXSIZE erreicht wurde. Wenn die Anzahl der Dateien bei der Auswertung des Werts von MAX_ROLLOVER_FILES die Einstellung für MAX_ROLLOVER_FILES überschreitet, wird die älteste Datei gelöscht. Wenn die Einstellung für MAX_ROLLOVER_FILES 0 lautet, wird folglich bei jeder Auswertung der Einstellung für MAX_ROLLOVER_FILES eine neue Datei erstellt. Bei der Auswertung der Einstellung für MAX_ROLLOVER_FILES wird nur eine Datei automatisch gelöscht. Wenn der Wert von MAX_ROLLOVER_FILES also sinkt, verringert sich die Anzahl der Dateien nur dann, wenn alte Dateien manuell gelöscht werden. Der Maximalwert für die Anzahl der Dateien beträgt 2.147.483.647.
MAX_ROLLOVER_FILES wird für Azure SQL Managed Instance nicht unterstützt.
MAX_FILES = Ganzzahl
Gibt die maximale Anzahl von Überwachungsdateien an, die erstellt werden können. Führt keinen Rollover zur ersten Datei aus, wenn die Grenze erreicht wird. Wenn der MAX_FILES Grenzwert erreicht ist, schlägt jede Aktion, die bewirkt, dass mehr Überwachungsereignisse generiert werden, mit einem Fehler fehl.
RESERVE_DISK_SPACE = { EIN | AUS }
Diese Option ordnet der Datei auf dem Datenträger den MAXSIZE-Wert zu. Sie gilt nur, wenn MAXSIZE sie nicht gleich UNLIMITED ist. Der Standardwert ist OFF.
Das RESERVE_DISK_SPACE-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt.
QUEUE_DELAY = Ganzzahl
Gibt den Zeitraum in Millisekunden an, der verstreichen kann, bevor die Verarbeitung von Überwachungsaktionen erzwungen wird. Der Wert 0 steht für eine synchrone Übermittlung. Der minimale festlegbare Abfrageverzögerungswert ist 1000 (1 Sekunde), was auch der Standardwert ist. Der maximale Wert beträgt 2147483647 (2.147.483,647 Sekunden oder 24 Tage, 20 Stunden, 31 Minuten und 23.647 Sekunden). Wenn Sie eine ungültige Zahl angeben, wird der MSG_INVALID_QUEUE_DELAY-Fehler ausgelöst.
ON_FAILURE = { WEITER | ABSCHALTUNG | FAIL_OPERATION }
Gibt an, ob die an das Ziel ausgebende Instanz SQL Server fehlschlagen lassen, fortsetzen oder beenden soll, wenn das Ziel keine Daten in das Überwachungsprotokoll schreiben kann. Der Standardwert ist CONTINUE.
CONTINUE
SQL Server -Vorgänge werden fortgesetzt. Überwachungsdatensätze werden nicht beibehalten. Bei der Überwachung wird weiterhin versucht, Ereignisse zu protokollieren. Sie wird fortgesetzt, wenn die Fehlerbedingung aufgelöst wurde. Durch Auswählen der Continue-Option können unter Umständen nicht überwachte Aktivitäten ausgeführt werden, die gegen Ihre Sicherheitsrichtlinien verstoßen könnten. Verwenden Sie diese Option, wenn die weitere Verwendung von Datenbank-Engine wichtiger als die Beibehaltung einer vollständigen Überwachung ist.
SHUTDOWN
Erzwingt, dass die Instanz von SQL Server heruntergefahren wird, falls SQL Server aus irgendeinem Grund keine Daten in das Überwachungsziel schreiben kann. Die Anmeldung, bei der die CREATE SERVER AUDIT-Anweisung ausgeführt wird, muss über die SHUTDOWN-Berechtigung in SQL Server verfügen. Das Herunterfahren wird auch dann fortgesetzt, wenn die SHUTDOWN-Berechtigung später von der ausführenden Anmeldung widerrufen wird. Wenn der Benutzer nicht über diese Berechtigung verfügt, schlägt die Anweisung fehl, und die Überwachung wird nicht erstellt. Verwenden Sie die Option, wenn ein Überwachungsfehler die Sicherheit oder die Integrität des Systems beeinträchtigen konnte. Weitere Informationen finden Sie unter SHUTDOWN.
FAIL_OPERATION
Datenbankaktionen schlagen fehl, wenn sie überwachte Ereignisse verursachen. Aktionen, die keine überwachten Ereignisse verursachen, können fortgesetzt werden, es können jedoch keine überwachten Ereignisse auftreten. Bei der Überwachung wird weiterhin versucht, Ereignisse zu protokollieren. Sie wird fortgesetzt, wenn die Fehlerbedingung aufgelöst wurde. Verwenden Sie diese Option, wenn die Beibehaltung einer vollständigen Überwachung wichtiger als der Vollzugriff auf Datenbank-Engine ist.
AUDIT_GUID = eindeutiger Identifikator
Um Szenarien wie Datenbankspiegelung oder Datenbanken zu unterstützen, die an einer AlwaysOn-Verfügbarkeitsgruppe teilnehmen, benötigt eine Überwachung eine bestimmte GUID, die der in der gespiegelten Datenbank gefundenen GUID entspricht. Der GUID kann, nachdem die Überwachung erstellt wurde, nicht mehr geändert werden.
OPERATOR_AUDIT
Gilt mnur für: Azure SQL Managed Instance.
Gibt an, ob die Überwachung die Vorgänge von Microsoft-Supporttechnikern erfasst, wenn sie während einer Supportanfrage auf Ihren Server zugreifen müssen.
predicate_expression
Gibt den Prädikatausdruck an, mit dessen Hilfe bestimmt wird, ob ein Ereignis verarbeitet werden muss. Prädikatausdrücke sind auf eine Länge von 3.000 Zeichen beschränkt, wodurch Zeichenfolgenargumente begrenzt werden.
event_field_name
Der Name des Ereignisfelds, das die Prädikatquelle identifiziert. Überwachungsfelder werden in sys.fn_get_audit_file beschrieben. Mit Ausnahme von file_name, audit_file_offset und event_time können alle Felder gefiltert werden.
Note
Während die Felder action_id und class_type den Datentyp varchar in sys.fn_get_audit_file aufweisen, können sie nur mit Zahlen verwendet werden, wenn sie eine Prädikatquelle für die Filterung darstellen. Führen Sie die folgende Abfrage aus, um die Liste der mit class_type zu verwendenden Werte abzurufen:
SELECT spt.[name], spt.[number] FROM [master].[dbo].[spt_values] spt WHERE spt.[type] = N'EOD' ORDER BY spt.[name];
number
Jeder numerische Typ einschließlich decimal. Einschränkungen stellen der verfügbare physische Speicher oder eine Zahl dar, die zu groß ist, um als 64-Bit-Ganzzahl dargestellt werden zu können.
'string'
Entweder eine ANSI- oder Unicode-Zeichenfolge, die vom Prädikatvergleich verlangt wird. Für die Prädikatvergleichsfunktionen wird keine implizite Zeichenfolgentypkonvertierung ausgeführt. Die Übergabe des falschen Typs führt zu einem Fehler.
Remarks
Wenn eine Serverüberwachung erstellt wird, befindet sie sich im deaktivierten Zustand.
Die CREATE SERVER AUDIT-Anweisung liegt im Bereich einer Transaktion. Wird ein Rollback für die Transaktion ausgeführt, so wird auch für die Anweisung ein Rollback durchgeführt.
Permissions
Um eine Serverüberwachung zu erstellen, zu ändern oder zu löschen, benötigen Prinzipale die ALTER ANY SERVER AUDITT-Berechtigung oder die CONTROL SERVER-Berechtigung.
Schränken Sie beim Speichern von Überwachungsinformationen in einer Datei den Zugriff auf deren Speicherort ein, um eine Manipulation zu verhindern.
Examples
A. Erstellen einer Serverüberwachung mit einem Dateiziel
Im folgenden Beispiel wird eine Serverüberwachung namens HIPAA_Audit mit einer Binärdatei als Ziel und ohne weitere Optionen erstellt.
CREATE SERVER AUDIT HIPAA_Audit TO FILE (
FILEPATH = '\\SQLPROD_1\Audit\'
);
B. Erstellen einer Serverüberwachung mit einem Windows-Anwendungsprotokollziel und Optionen
Im folgenden Beispiel wird eine Serverüberwachung namens HIPAA_Audit mit dem Windows-Ereignisprotokoll als Ziel erstellt. Die Warteschlange wird jede Sekunde geschrieben und fährt bei einem Fehler die SQL Server-Engine herunter.
CREATE SERVER AUDIT HIPAA_Audit TO APPLICATION_LOG
WITH (QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);
C. Erstellen einer Serverüberwachung, die eine WHERE-Klausel enthält
Im folgenden Beispiel werden eine Datenbank, ein Schema und zwei Tabellen für das Beispiel erstellt. Die Tabelle mit dem Namen DataSchema.SensitiveData enthält vertrauliche Daten. Der Zugriff auf die Tabelle muss bei der Überwachung aufgezeichnet werden. Die Tabelle DataSchema.GeneralData beinhaltet keine vertraulichen Daten. Die Datenbank-Überwachungsspezifikation überwacht den Zugriff auf alle Objekte im DataSchema-Schema. Die Serverüberwachung wird mit einer WHERE-Klausel erstellt, die die Serverüberwachung ausschließlich auf die SensitiveData-Tabelle beschränkt. Bei der Serverüberwachung wird angenommen, dass unter C:\SQLAudit ein Überwachungsordner vorhanden ist.
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE SCHEMA DataSchema;
GO
CREATE TABLE DataSchema.GeneralData
(
ID INT PRIMARY KEY,
DataField VARCHAR (50) NOT NULL
);
GO
CREATE TABLE DataSchema.SensitiveData
(
ID INT PRIMARY KEY,
DataField VARCHAR (50) NOT NULL
);
GO
-- Create the server audit in the master database
USE master;
GO
CREATE SERVER AUDIT AuditDataAccess TO FILE (FILEPATH = 'C:\SQLAudit\')
WHERE object_name = 'SensitiveData';
GO
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
GO
-- Create the database audit specification in the TestDB database
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess]
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH(STATE = ON);
GO
-- Trigger the audit event by selecting from tables
SELECT ID,
DataField
FROM DataSchema.GeneralData;
SELECT ID,
DataField
FROM DataSchema.SensitiveData;
GO
-- Check the audit for the filtered content
SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO
Transact-SQL reference
- ÄNDERUNGSÜBERPRÜFUNG DES SERVERS (Transact-SQL)
- SERVER-AUDIT LÖSCHEN (Transact-SQL)
- SERVER-ÜBERPRÜFUNGSSPEZIFIKATION ERSTELLEN (Transact-SQL)
- ÄNDERN DER SERVER-PRÜFUNGSSPEZIFIKATION (Transact-SQL)
- DROP SERVER AUDIT SPEZIFIKATION (Transact-SQL)
- ERSTELLE DATENBANK-ÜBERWACHUNGSSPEZIFIKATION (Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION ( SIETransact-SQL)
- DROP-DATENBANK-AUDIT-SPEZIFIKATION (Transact-SQL)
- ÄNDERN DER AUTORISIERUNG (Transact-SQL)
Related content
- sys.fn_get_audit_file (Transact-SQL)
- sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL)
- sys.server_audit_specifications (Transact-SQL)
- sys.server_audit_specification_details (Transact-SQL)
- sys.database_audit_specifications (Transact-SQL)
- sys.database_audit_specification_details (Transact-SQL)
- sys.dm_server_audit_status (Transact-SQL)
- sys.dm_audit_actions (Transact-SQL)
- sys.dm_audit_class_type_map (Transact-SQL)
- Erstellen einer Serverüberwachung und einer Serverüberwachungsspezifikation