Aracılığıyla paylaş


VERITABANI DENETIM SPESIFIKASYONU OLUŞTUR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

SQL Server denetim özelliğini kullanarak bir veritabanı denetim spesifikasyonu nesnesi oluşturur. Daha fazla bilgi için bkz . SQL Server Denetimi (Veritabanı Altyapısı).

Transact-SQL söz dizimi kuralları

Sözdizimi

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 ]
}

Arguments

audit_specification_name

Denetim spesifikasyonunun adı.

audit_name

Bu spesifikasyonun uygulandığı denetimin adı.

audit_action_specification

Denetimde kaydedilmesi gereken yöneticiler tarafından menkul kıymetli varlıklar üzerinde yapılan işlemlerin belirtilmesi.

action

Veritabanı düzeyinde denetlenebilir bir veya daha fazla eylemin adı. Denetim eylemlerinin listesi için SQL Server Denetim Eylem Grupları ve Eylemleri'ne bakınız.

audit_action_group_name

Veritabanı düzeyinde denetlenebilir eylemlerden oluşan bir veya daha fazla grubun adı. Denetim eylem gruplarının listesi için SQL Server Denetim Eylem Grupları ve Eylemleri'ne bakınız.

sınıf

Temenkul belgedeki sınıf adı (varsa).

securable

Veritabanındaki tablo, görünüm veya denetim eylemi veya denetim eylem grubunun uygulanacağı diğer güvenli nesne. Daha fazla bilgi için bkz: Güvenlik Unsurları.

principal

Denetim eylemi veya denetim eylem grubunun uygulanacağı veritabanı başlıca adı. Tüm veritabanı yöneticilerini denetlemek için genel veritabanı prensibini kullanın. Daha fazla bilgi için Principals (Database Engine) bölümüne bakınız.

WITH ( STATE = { ÜZERINDE | KAPALI } )

Denetimin bu denetim spesifikasyonu için kayıt toplamasını mümkün kılar veya devre dışı bırakır.

Açıklamalar

Veritabanı denetim spesifikasyonları, belirli bir veritabanında bulunan güvenlikle alınamayan nesnelerdir. Bir veritabanı denetim spesifikasyonu oluşturulduğunda, bu durum devre dışı kalır.

Permissions

İzni alan ALTER ANY DATABASE AUDIT kullanıcılar, veritabanı denetim spesifikasyonları oluşturabilir ve onları herhangi bir denetime bağlayabilirler.

Bir veritabanı denetim spesifikasyonu oluşturulduktan sonra, izni veya CONTROL SERVER hesaba sahip sysadmin kullanıcılar bunu görebilir.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Herhangi bir veritabanı prensifi için bir tabloda SELECT ve INSERT denetleme

Aşağıdaki örnek, bir sunucu denetimi ve Payroll_Security_Audit ardından bu veritabanı denetimi spesifikasyonu olarak Payroll_Security_AuditSELECTINSERT adlandırılan bir veritabanı denetimi spesifikasyonu oluşturur; bu tür denetimler ve açıklamalar tablo için HumanResources.EmployeePayHistory açık veritabanı rolünün herhangi bir üyesi tarafından yapılır. Her kullanıcı denetleniyor, çünkü her kullanıcı her zaman kamu rolünün bir üyesidir.

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. Belirli bir veritabanı rolü için şemadaki tüm nesnelerde yapılan herhangi bir veri değişikliğini denetleyin

Aşağıdaki örnek, şemadaki tüm nesneler DataModification_Security_Audit için yeni bir veritabanı rolünde Audit_Data_Modification_On_All_Sales_Tableskullanıcıların denetimlerini ve ardından bir veritabanı denetim spesifikasyonunu INSERTUPDATEDELETESalesUK içeren bir sunucu denetimi Sales ve ardından veritabanı denetim spesifikasyonu oluşturulur.

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

Sunucu denetim özellikleri:

Veritabanı denetim spesifikasyonları:

Katalog görünümleri ve DMV'ler: