Teilen über


CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Erstellt die Spezifikation eines Datenbanküberwachungsobjekts mithilfe der SQL Server Audit-Funktion. Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine).

Transact-SQL-Syntaxkonventionen

Syntax

CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
    FOR SERVER AUDIT audit_name
        [ ADD (
            { <audit_action_specification> | audit_action_group_name }
            [ , ...n ] )
        ]
        [ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
    action [ , ...n ] ON [class::]securable BY principal [ , ...n ]
}

Argumente

audit_specification_name

Der Name der Überwachungsspezifikation.

audit_name

Der Name der Überwachung, auf die diese Spezifikation angewendet wird.

audit_action_specification

Die Spezifikation von Aktionen für sicherungsfähige Daten nach Prinzipalen, die in der Prüfung aufgezeichnet werden sollen.

action

Der Name einer oder mehrerer überwachter Aktionen auf Datenbankebene. Eine Liste der Überwachungsaktionsgruppen finden Sie unter SQL Server Audit-Aktionsgruppen und -Aktionen.

audit_action_group_name

Der Name einer oder mehrerer Gruppen von überwachten Aktionen auf Datenbankebene. Eine Liste der Überwachungsaktionsgruppen finden Sie unter SQL Server Audit-Aktionsgruppen und -Aktionen.

class

Der Klassenname (falls zutreffend) für die sicherungsfähige Klasse.

securable

Die Tabelle, Ansicht oder ein anderes sicherungsfähiges Objekt in der Datenbank, auf das die Überwachungsaktion oder die Überwachungsaktionsgruppe angewendet werden soll. Weitere Informationen finden Sie unter Securables.

principal

Der Name des Datenbankprinzipals, auf den die Überwachungsaktion oder die Überwachungsaktionsgruppe angewendet werden soll. Verwenden Sie den öffentlichen Datenbankprinzipal, um alle Datenbankprinzipale zu überwachen. Weitere Informationen finden Sie unter Prinzipale (Datenbank-Engine).

WITH ( STATE = { ON | OFF } )

Aktiviert oder deaktiviert das Sammeln von Datensätzen durch die Überwachung für diese Überwachungsspezifikation.

Bemerkungen

Datenbank-Überwachungsspezifikationen sind nicht sicherungsfähige Objekte, die sich in einer gegebenen Datenbank befinden. Wenn eine Datenbanküberwachungsspezifikation erstellt wird, ist diese zunächst deaktiviert.

Berechtigungen

Benutzer mit der ALTER ANY DATABASE AUDIT-Berechtigung können Datenbanküberwachungsspezifikationen erstellen und sie an eine beliebige Überwachung binden.

Nachdem eine Datenbanküberwachungsspezifikation erstellt wurde, können Benutzer mit der CONTROL SERVER Berechtigung oder das sysadmin Konto sie anzeigen.

Beispiele

Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022- oder AdventureWorksDW2022-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.

A. Überwachen von "AUSWÄHLEN" und "EINFÜGEN" in einer Tabelle für ein beliebiges Datenbankprinzipal

Im folgenden Beispiel wird eine Serverüberwachung erstellt, die aufgerufen Payroll_Security_Audit wird, und dann eine DatenbanküberwachungsspezifikationPayroll_Security_Audit, die von jedem Mitglied der öffentlichen Datenbankrolle für die HumanResources.EmployeePayHistory Tabelle überprüft SELECT und INSERT anweisungen aufgerufen wird. Jeder Benutzer wird überwacht, da jeder Benutzer immer Mitglied der öffentlichen Rolle ist.

USE master;
GO

-- Create the server audit.
CREATE SERVER AUDIT Payroll_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT Payroll_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
USE AdventureWorks2022;
GO

-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
FOR SERVER AUDIT Payroll_Security_Audit ADD (
    SELECT, INSERT ON HumanResources.EmployeePayHistory BY PUBLIC
)
WITH (STATE = ON);
GO

B. Überwachen aller Datenänderungen für alle Objekte in einem Schema für eine bestimmte Datenbankrolle

Im folgenden Beispiel wird eine Serverüberwachung erstellt, die aufgerufen DataModification_Security_Audit wird, und dann eine Datenbanküberwachungsspezifikation, die als Überprüfung INSERTund DELETE UPDATEAnweisungen von Benutzern in einer neuen Datenbankrolle SalesUKbezeichnet Audit_Data_Modification_On_All_Sales_Tables wird, für alle Objekte im Sales Schema.

USE master;
GO

-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to.
CREATE SERVER AUDIT DataModification_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT DataModification_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
USE AdventureWorks2022;
GO

CREATE ROLE SalesUK
GO

-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables
FOR SERVER AUDIT DataModification_Security_Audit ADD (
    INSERT, UPDATE, DELETE ON SCHEMA::Sales BY SalesUK
)
WITH (STATE = ON);
GO

Serverüberwachungsspezifikationen:

Datenbanküberwachungsspezifikationen:

Katalogansichten und DMVs: