CREATE SERVER AUDIT (Transact-SQL)CREATE SERVER AUDIT (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Erstellt mit SQL ServerSQL Server-Überwachung ein Serverüberwachungsobjekt.Creates a server audit object using SQL ServerSQL Server Audit. Weitere Informationen finden Sie unter SQL Server Audit (Datenbankmodul).For more information, see SQL Server Audit (Database Engine).

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

CREATE SERVER AUDIT audit_name  
{  
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG }  
    [ 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 ]  
}  

<predicate_expression>::=  
{  
    [NOT ] <predicate_factor>   
    [ { AND | OR } [NOT ] { <predicate_factor> } ]   
    [,...n ]  
}  

<predicate_factor>::=   
    event_field_name { = | < > | ! = | > | > = | < | < = } { number | ' string ' }  

ArgumenteArguments

TO { DATEI | ANWENDUNGSPROTOKOLL | SICHERHEITSPROTOKOLL }TO { FILE | APPLICATION_LOG | SECURITY_LOG }
Legt den Speicherort des Überwachungsziels fest.Determines the location of the audit target. Die Optionen sind eine Binärdatei, das Windows-Anwendungsprotokoll oder das Windows-Sicherheitsprotokoll an.The options are a binary file, The Windows Application log, or the Windows Security log. SQL ServerSQL Server kann nicht in das Windows-Sicherheitsprotokoll schreiben, ohne zusätzliche Einstellungen in Windows zu konfigurieren. cannot write to the Windows Security log without configuring additional settings in Windows. Weitere Informationen finden Sie unter Schreiben von SQL-Serverüberwachungsereignissen in das Sicherheitsprotokoll.For more information, see Write SQL Server Audit Events to the Security Log.

FILEPATH = "Os_file_path"FILEPATH ='os_file_path'
Der Pfad des Überwachungsprotokolls.The path of the audit log. Der Dateiname wird auf der Grundlage des Überwachungsnamens und des Überwachungs-GUID generiert.The file name is generated based on the audit name and audit GUID.

MAXSIZE = { Max_size}MAXSIZE = { max_size }
Gibt die maximale Größe an, die die Überwachungsdatei annehmen kann.Specifies the maximum size to which the audit file can grow. Die Max_size Wert muss eine ganze Zahl, gefolgt von MB, GB, TB oder UNLIMITED sein.The max_size value must be an integer followed by MB, GB, TB, or UNLIMITED. Die minimale Größe, die Sie angeben können Max_size ist 2 MB und der Höchstwert beträgt 2.147.483.647 TB.The minimum size that you can specify for max_size is 2 MB and the maximum is 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.When UNLIMITED is specified, the file grows until the disk is full. (0 steht ebenfalls für UNLIMITED.) Angabe eines Werts kleiner als 2 MB löst den Fehler MSG_MAXSIZE_TOO_SMALL aus.(0 also indicates UNLIMITED.) Specifying a value lower than 2 MB raises the error MSG_MAXSIZE_TOO_SMALL. Der Standardwert ist UNLIMITED.The default value is UNLIMITED.

MAX_ROLLOVER_FILES ={Ganzzahl | UNBEGRENZTE}MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
Gibt die maximale Anzahl der Dateien an, die im Dateisystem zusätzlich zur aktuellen Datei beibehalten werden.Specifies the maximum number of files to retain in the file system in addition to the current file. Die MAX_ROLLOVER_FILES Wert muss eine ganze Zahl oder UNLIMITED sein.The MAX_ROLLOVER_FILES value must be an integer or UNLIMITED. Der Standardwert ist UNLIMITED.The default value is UNLIMITED. Dieser Parameter wird ausgewertet, sobald die Überwachung neu gestartet wird (der möglich, wenn der Instanz von der DatenbankmodulDatabase Engine neu gestartet wird oder wenn die Überwachung aktiviert ist deaktiviert, und klicken Sie dann auf erneut) oder wenn eine neue Datei benötigt wird, da MAXSIZE erreicht wurde.This parameter is evaluated whenever the audit restarts (which can happen when the instance of the DatenbankmodulDatabase Engine restarts or when the audit is turned off and then on again) or when a new file is needed because the MAXSIZE has been reached. Wenn MAX_ROLLOVER_FILES ausgewertet wird, wenn die Anzahl der Dateien überschreitet das MAX_ROLLOVER_FILES festlegen, wird die älteste Datei gelöscht.When MAX_ROLLOVER_FILES is evaluated, if the number of files exceeds the MAX_ROLLOVER_FILES setting, the oldest file is deleted. Daher, wenn die Einstellung der MAX_ROLLOVER_FILES ist 0, die eine neue Datei jedes Mal erstellt die MAX_ROLLOVER_FILES -Einstellung ausgewertet wird.As a result, when the setting of MAX_ROLLOVER_FILES is 0 a new file is created each time the MAX_ROLLOVER_FILES setting is evaluated. Nur eine Datei wird automatisch gelöscht, sobald MAX_ROLLOVER_FILES -Einstellung ausgewertet wird daher der Wert der MAX_ROLLOVER_FILES wird verringert, die Anzahl der Dateien wird nicht verkleinert, es sei denn, alte Dateien manuell gelöscht.Only one file is automatically deleted when MAX_ROLLOVER_FILES setting is evaluated, so when the value of MAX_ROLLOVER_FILES is decreased, the number of files does not shrink unless old files are manually deleted. Der Maximalwert für die Anzahl der Dateien beträgt 2.147.483.647.The maximum number of files that can be specified is 2,147,483,647.

MAX_FILES =ganze ZahlMAX_FILES =integer
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Gibt die maximale Anzahl von Überwachungsdateien an, die erstellt werden können.Specifies the maximum number of audit files that can be created. Führt kein Rollover zur ersten Datei aus, wenn die Grenze erreicht wird.Does not rollover to the first file when the limit is reached. Wenn die MAX_FILES-Grenze erreicht wird, verursacht alle Aktionen, die zusätzliche Überwachungsereignisse erzeugt werden kann, verursacht einen Fehler.When the MAX_FILES limit is reached, any action that causes additional audit events to be generated, fails with an error.

RESERVE_DISK_SPACE = { ON | OFF }RESERVE_DISK_SPACE = { ON | OFF }
Diese Option ordnet der Datei auf dem Datenträger den MAXSIZE-Wert zu.This option pre-allocates the file on the disk to the MAXSIZE value. Sie gilt nur, wenn MAXSIZE nicht gleich UNLIMITED ist.It applies only if MAXSIZE is not equal to UNLIMITED. Der Standardwert ist OFF.The default value is OFF.

QUEUE_DELAY =ganze ZahlQUEUE_DELAY =integer
Bestimmt die Zeit in Millisekunden, die verstreichen kann, bevor die Verarbeitung von Überwachungsaktionen erzwungen werden.Determines the time, in milliseconds, that can elapse before audit actions are forced to be processed. Der Wert 0 steht für eine synchrone Übermittlung.A value of 0 indicates synchronous delivery. Der minimale festlegbare Abfrageverzögerungswert ist 1000 (1 Sekunde), was auch der Standardwert ist.The minimum settable query delay value is 1000 (1 second), which is the default. Der maximale Wert beträgt 2.147.483.647 (2.147.483,647 Sekunden oder 24 Tage, 20 Stunden, 31 Minuten und 23,647 Sekunden).The maximum is 2,147,483,647 (2,147,483.647 seconds or 24 days, 20 hours, 31 minutes, 23.647 seconds). Angeben eines ungültigen Werts löst den Fehler MSG_INVALID_QUEUE_DELAY aus.Specifying an invalid number, raises the MSG_INVALID_QUEUE_DELAY error.

ON_FAILURE = {WEITERHIN | HERUNTERFAHREN | FAIL_OPERATION}ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
Gibt an, ob die an das Ziel ausgebende Instanz SQL ServerSQL Server fehlschlagen lassen, fortsetzen oder beenden soll, wenn das Ziel keine Daten in das Überwachungsprotokoll schreiben kann.Indicates whether the instance writing to the target should fail, continue, or stop SQL ServerSQL Server if the target cannot write to the audit log. Der Standardwert ist CONTINUE.The default value is CONTINUE.

CONTINUECONTINUE
SQL ServerSQL Server -Vorgänge werden fortgesetzt. operations continue. Überwachungsdatensätze werden nicht beibehalten.Audit records are not retained. Die Überwachung weiterhin versucht, Ereignisse und wieder zu protokollieren, wenn die fehlerbedingung aufgelöst wurde.The audit continues to attempt to log events and resumes if the failure condition is resolved. Auswählen der Continue-Option können unter Umständen unüberwachte Aktivitäten, Ihre Sicherheitsrichtlinien verstoßen.Selecting the continue option can allow unaudited activity, which could violate your security policies. Verwenden Sie diese Option, wenn die weitere Verwendung von DatenbankmodulDatabase Engine wichtiger als die Beibehaltung einer vollständigen Überwachung ist.Use this option, when continuing operation of the DatenbankmodulDatabase Engine is more important than maintaining a complete audit.

SHUTDOWNSHUTDOWN
Erzwingt, dass die Instanz von SQL ServerSQL Server Herunterfahren, If SQL ServerSQL Server zum Schreiben von Daten in das Überwachungsziel aus irgendeinem Grund fehlschlägt.Forces the instance of SQL ServerSQL Server to shut down, if SQL ServerSQL Server fails to write data to the audit target for any reason. Der Anmeldung ausgeführten der CREATE SERVER AUDIT Anweisung benötigen die SHUTDOWN Berechtigung innerhalb SQL ServerSQL Server.The login executing the CREATE SERVER AUDIT statement must have the SHUTDOWN permission within SQL ServerSQL Server. Das Herunterfahren Verhalten weiterhin besteht auch dann, wenn die SHUTDOWN Berechtigung später von der ausgeführten Anmeldung aufgehoben.The shutdown behavior persists even if the SHUTDOWN permission is later revoked from the executing login. Wenn der Benutzer nicht über diese Berechtigung verfügt, wird Klicken Sie dann die Anweisung schlägt fehl und die Überwachung nicht erstellt werden.If the user does not have this permission, then the statement fails and the audit is not be created. Verwenden Sie die Option, wenn ein Überwachungsfehler die Sicherheit oder die Integrität des Systems beeinträchtigen konnte.Use the option when an audit failure could compromise the security or integrity of the system. Weitere Informationen finden Sie unter Herunterfahren.For more information, see SHUTDOWN.

FAIL_OPERATIONFAIL_OPERATION
Datenbankaktionen schlagen fehl, wenn sie überwachte Ereignisse verursachen.Database actions fail if they cause audited events. Aktionen, die keine überwachten Ereignisse verursachen, können fortgesetzt, aber es können keine überwachten Ereignisse auftreten.Actions, which do not cause audited events can continue, but no audited events can occur. Die Überwachung weiterhin versucht, Ereignisse und wieder zu protokollieren, wenn die fehlerbedingung aufgelöst wurde.The audit continues to attempt to log events and resumes if the failure condition is resolved. Verwenden Sie diese Option, wenn die Beibehaltung einer vollständigen Überwachung wichtiger als der Vollzugriff auf DatenbankmodulDatabase Engine ist.Use this option when maintaining a complete audit is more important than full access to the DatenbankmodulDatabase Engine.
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

AUDIT_GUID ="uniqueidentifier"AUDIT_GUID =uniqueidentifier
Um Szenarien, wie beispielsweise Datenbankspiegelung unterstützen zu können, benötigt eine Überwachung einen bestimmten GUID, der dem GUID in der gespiegelten Datenbank entspricht.To support scenarios such as database mirroring, an audit needs a specific GUID that matches the GUID found in the mirrored database. Der GUID kann, nachdem die Überwachung erstellt wurde, nicht mehr geändert werden.The GUID cannot be modified after the audit has been created.

predicate_expressionpredicate_expression
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Gibt den Prädikatausdruck an, mit dessen Hilfe bestimmt wird, ob ein Ereignis verarbeitet werden muss.Specifies the predicate expression used to determine if an event should be processed or not. Die Länge von Prädikatausdrücken ist auf 3000 Zeichen beschränkt, wodurch die Länge von Zeichenfolgenargumenten eingeschränkt wird.Predicate expressions are limited to 3000 characters, which limits string arguments.

event_field_nameevent_field_name
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Ist der Name des Ereignisfelds, das die Prädikatquelle identifiziert.Is the name of the event field that identifies the predicate source. Überwachungsfelder werden in beschrieben Sys. fn_get_audit_file ( Transact-SQL ) .Audit fields are described in sys.fn_get_audit_file (Transact-SQL). Mit Ausnahme von file_name und audit_file_offset können alle Felder überwacht werden.All fields can be audited except file_name and audit_file_offset.

numbernumber
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Alle numerischen Typen umfassen decimal.Is any numeric type including 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.Limitations are the lack of available physical memory or a number that is too large to be represented as a 64-bit integer.

' string '' string '
Gilt für: SQL Server 2012SQL Server 2012 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Entweder eine ANSI- oder Unicode-Zeichenfolge, die vom Prädikatvergleich verlangt wird.Either an ANSI or Unicode string as required by the predicate compare. Für die Prädikatvergleichsfunktionen wird keine implizite Zeichenfolgentypkonvertierung ausgeführt.No implicit string type conversion is performed for the predicate compare functions. Die Übergabe des falschen Typs führt zu einem Fehler.Passing the wrong type results in an error.

HinweiseRemarks

Wenn eine Serverüberwachung erstellt wird, befindet sie sich im deaktivierten Zustand.When a server audit is created, it is in a disabled state.

Die CREATE SERVER AUDIT-Anweisung liegt im Bereich einer Transaktion.The CREATE SERVER AUDIT statement is in a transaction's scope. Wird ein Rollback für die Transaktion ausgeführt, so wird auch für die Anweisung ein Rollback durchgeführt.If the transaction is rolled back, the statement is also rolled back.

BerechtigungenPermissions

Um eine Serverüberwachung zu erstellen, zu ändern oder zu löschen, benötigen Prinzipale die ALTER ANY SERVER AUDIT-Berechtigung oder die CONTROL SERVER-Berechtigung.To create, alter, or drop a server audit, principals require the ALTER ANY SERVER AUDIT or the CONTROL SERVER permission.

Schränken Sie beim Speichern von Überwachungsinformationen in einer Datei den Zugriff auf deren Speicherort ein, um eine Manipulation zu verhindern.When you are saving audit information to a file, to help prevent tampering, restrict access to the file location.

BeispieleExamples

A.A. Erstellen einer Serverüberwachung mit einem DateizielCreating a server audit with a file target

Im folgenden Beispiel wird eine Serverüberwachung namens HIPPA_Audit mit einer Binärdatei als Ziel und ohne weitere Optionen erstellt.The following example creates a server audit called HIPPA_Audit with a binary file as the target and no options.

CREATE SERVER AUDIT HIPAA_Audit  
    TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );  

B.B. Erstellen einer Serverüberwachung mit einem Windows-Anwendungsprotokollziel und OptionenCreating a server audit with a Windows Application log target with options

Im folgenden Beispiel wird eine Serverüberwachung namens HIPPA_Audit mit dem Windows-Ereignisprotokoll als Ziel erstellt.The following example creates a server audit called HIPPA_Audit with the target set for the Windows Application log. Die Warteschlange wird jede Sekunde geschrieben und fährt bei einem Fehler das SQL ServerSQL Server-Modul herunter.The queue is written every second and shuts down the SQL ServerSQL Server engine on failure.

CREATE SERVER AUDIT HIPAA_Audit  
    TO APPLICATION_LOG  
    WITH ( QUEUE_DELAY = 1000,  ON_FAILURE = SHUTDOWN);  

C. C. Erstellen einer Serverüberwachung, die eine WHERE-Klausel enthältCreating a server audit containing a WHERE clause

Im folgenden Beispiel werden eine Datenbank, ein Schema und zwei Tabellen für das Beispiel erstellt.The following example creates a database, schema, and two tables for the example. Die Tabelle mit dem Namen DataSchema.SensitiveData vertrauliche Daten enthält und Zugriff auf die Tabelle in der Überwachung aufgezeichnet werden muss.The table named DataSchema.SensitiveData contains confidential data and access to the table must be recorded in the audit. Die Tabelle DataSchema.GeneralData beinhaltet keine vertraulichen Daten.The table named DataSchema.GeneralData does not contain confidential data. Die Datenbank-Überwachungsspezifikation überwacht den Zugriff auf alle Objekte im DataSchema-Schema.The database audit specification audits access to all objects in the DataSchema schema. Die Serverüberwachung wird mit einer WHERE-Klausel erstellt, die die Serverüberwachung ausschließlich auf die SensitiveData-Tabelle beschränkt.The server audit is created with a WHERE clause that limits the server audit to only the SensitiveData table. Die serverüberwachung wird vorausgesetzt, ein Ordner "Audit" vorhanden ist, am C:\SQLAudit.The server audit presumes an audit folder exists at C:\SQLAudit.

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  

Siehe auchSee Also

ALTER SERVER AUDIT ( Transact-SQL ) ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT ( Transact-SQL ) DROP SERVER AUDIT (Transact-SQL)
Erstellen Sie die SERVER AUDIT SPECIFICATION ( Transact-SQL ) CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION ( Transact-SQL ) ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION ( Transact-SQL ) DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
Erstellen Sie DATABASE AUDIT SPECIFICATION ( Transact-SQL ) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION ( Transact-SQL ) ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION ( Transact-SQL ) DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION ( Transact-SQL ) ALTER AUTHORIZATION (Transact-SQL)
Sys. fn_get_audit_file ( Transact-SQL ) sys.fn_get_audit_file (Transact-SQL)
Sys. server_audits ( Transact-SQL ) sys.server_audits (Transact-SQL)
Sys. server_file_audits ( Transact-SQL ) sys.server_file_audits (Transact-SQL)
server_audit_specifications ( Transact-SQL ) sys.server_audit_specifications (Transact-SQL)
server_audit_specification_details ( Transact-SQL ) sys.server_audit_specification_details (Transact-SQL)
database_audit_specifications ( Transact-SQL ) sys.database_audit_specifications (Transact-SQL)
database_audit_specification_details ( Transact-SQL ) sys.database_audit_specification_details (Transact-SQL)
dm_server_audit_status ( Transact-SQL ) sys.dm_server_audit_status (Transact-SQL)
dm_audit_actions ( Transact-SQL ) sys.dm_audit_actions (Transact-SQL)
dm_audit_class_type_map ( Transact-SQL ) sys.dm_audit_class_type_map (Transact-SQL)
Erstellen einer Serverüberwachung und einer ServerüberwachungsspezifikationCreate a Server Audit and Server Audit Specification