Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
SQL Server Denetimi kullanarak bir sunucu denetim nesnesi oluşturur. Daha fazla bilgi için bkz. SQL Server Denetimi (Veritabanı Altyapısı).
Transact-SQL söz dizimi kuralları
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 } ]
[ , RETENTION_DAYS = integer ]
}
<predicate_expression> ::=
{ [ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ] [ ,... n ] }
<predicate_factor> ::=
event_field_name { = | < > | != | > | >= | < | <= | LIKE }
{ number | 'string' }
Arguments
audit_name
Denetimin adı. SQL Server 2019 (15.x) ve önceki sürümler denetim adında boşluk içeremez.
KİME { DOSYA | APPLICATION_LOG | SECURITY_LOG | Erişim Adresi | EXTERNAL_MONITOR }
Denetim hedefinin konumunu belirler. Seçenekler bir ikili dosya, Windows Uygulama günlüğü veya Windows Güvenlik günlüğü'lerdir. SQL Server, Windows'ta ek ayarlar yapılandırmadan Windows Güvenlik günlüğüne yazamaz. Daha fazla bilgi için bkz. Sql Server Denetim olaylarını Güvenlik günlüğüne yazma.
Hedef URL , SQL Server için desteklenmez.
Important
Azure SQL Yönetilen Örneği'nde SQL Denetimi sunucu düzeyinde çalışır. Konumlar yalnızca veya URLolabilirEXTERNAL_MONITOR.
DOSYA YOLU = 'os_file_path'
Denetim günlüğünün yolu. Dosya adı, denetim adı ve denetim GUID'sine göre oluşturulur. Bu yol geçersizse denetim oluşturulmaz.
FILEPATH hedef, Azure SQL Yönetilen Örneği için desteklenmez. Bunun yerine kullanmanız PATH gerekir.
MAKSIMUM BOYUT = max_size
Denetim dosyasının büyüyebileceği boyut üst sınırını belirtir.
max_size değeri MB, GB, TB veya UNLIMITEDardından gelen bir tamsayı olmalıdır.
max_size için belirtebileceğiniz en düşük boyut 2 MB ve en fazla 2.147.483.647 TB'dir. belirttiğinizde UNLIMITED, disk dolana kadar dosya büyür. (0 ayrıca gösterir UNLIMITED.) 2 MB'tan düşük bir değer belirtilmesi hatasını MSG_MAXSIZE_TOO_SMALLverir. Varsayılan değer şudur: UNLIMITED.
MAXSIZE hedef, Azure SQL Yönetilen Örneği için desteklenmez.
MAX_ROLLOVER_FILES = { integer | SINIRSIZ }
Geçerli dosyaya ek olarak dosya sisteminde tutulacak en fazla dosya sayısını belirtir. Değer MAX_ROLLOVER_FILES bir tamsayı veya UNLIMITEDolmalıdır. Varsayılan değer şudur: UNLIMITED. Bu parametre, denetim yeniden başlatıldığında (Veritabanı Altyapısı örneği yeniden başlatıldığında veya denetim kapatılıp yeniden açıldığında gerçekleşebilir) veya öğesine ulaşıldığı için MAXSIZE yeni bir dosya gerektiğinde değerlendirilir. Değerlendirildiğinde MAX_ROLLOVER_FILES , dosya sayısı ayarı aşarsa MAX_ROLLOVER_FILES en eski dosya silinir. Sonuç olarak, ayarı 0 olduğunda, ayar MAX_ROLLOVER_FILES her MAX_ROLLOVER_FILES değerlendirildiğinde yeni bir dosya oluşturulur. Ayar değerlendirildiğinde MAX_ROLLOVER_FILES yalnızca bir dosya otomatik olarak silinir, dolayısıyla değeri MAX_ROLLOVER_FILES azaldığında eski dosyalar el ile silinmediği sürece dosya sayısı küçülmüyor. Belirtebileceğiniz en fazla dosya sayısı 2.147.483.647'dir.
MAX_ROLLOVER_FILES Azure SQL Yönetilen Örneği için desteklenmez.
MAX_FILES = tamsayı
Oluşturulabilecek en fazla denetim dosyası sayısını belirtir. Sınıra ulaşıldığında denetim ilk dosyaya aktarılmıyor. Sınıra MAX_FILES ulaşıldığında, daha fazla denetim olayının oluşturulmasına neden olan tüm eylemler hatayla başarısız olur.
RESERVE_DISK_SPACE = { ON | KAPALI }
Bu seçenek disk üzerindeki dosyayı değere MAXSIZE önceden ayırır. Yalnızca MAXSIZE eşit UNLIMITEDdeğilse geçerlidir. Varsayılan değer şudur: OFF.
RESERVE_DISK_SPACE hedef, Azure SQL Yönetilen Örneği için desteklenmez.
QUEUE_DELAY = tamsayı
Denetim eylemleri işlenmeden önce geçen süreyi milisaniye cinsinden belirler. 0 değeri zaman uyumlu teslimi gösterir. En düşük ayarlanabilir sorgu gecikme değeri 1000 (1 saniye), varsayılan değerdir. Maksimum değerdir 2147483647 (2.147.483.647 saniye veya 24 gün, 20 saat, 31 dakika, 23.647 saniye). Geçersiz bir sayı belirtilmesi hataya neden olur MSG_INVALID_QUEUE_DELAY .
ON_FAILURE = { CONTINUE | KAPATMA | FAIL_OPERATION }
Hedef denetim günlüğüne yazamıyorsa hedefe yazma örneğinin başarısız olması, devam etmesi veya SQL Server'ı durdurması gerekip gerekmediğini gösterir. Varsayılan değer şudur: CONTINUE.
CONTINUE
SQL Server işlemleri devam ediyor. Denetim kayıtları korunmaz. Denetim olayları günlüğe kaydetmeye çalışır ve hata koşulu çözümlenirse devam eder. Devam et seçeneğinin seçilmesi, güvenlik ilkelerinizi ihlal edebilecek, desteklenmeyen etkinliğe izin verebilir. Veritabanı Altyapısı'nın işlemine devam ederken tam denetimden daha önemli olduğunda bu seçeneği kullanın.
SHUTDOWN
SQL Server herhangi bir nedenle denetim hedefine veri yazamıyorsa SQL Server örneğini kapatmaya zorlar. deyimini yürüten oturum açma bilgilerinin CREATE SERVER AUDIT SQL Server'da SHUTDOWN izni olmalıdır. İzin daha sonra yürütülen oturum açma işleminden SHUTDOWN iptal edilse bile kapatma davranışı devam eder. Kullanıcı bu izne sahip değilse, deyimi başarısız olur ve denetim oluşturulmaz. Bir denetim hatası sistemin güvenliğini veya bütünlüğünü tehlikeye atabilirken seçeneğini kullanın. Daha fazla bilgi için bkz . SHUTDOWN.
FAIL_OPERATION
Veritabanı eylemleri denetlenen olaylara neden olursa başarısız olur. Denetlenen olaylara neden olmayan eylemler devam edebilir, ancak denetlenen hiçbir olay gerçekleşemez. Denetim olayları günlüğe kaydetmeye çalışır ve hata koşulu çözümlenirse devam eder. Tam denetim sağlamak, Veritabanı Altyapısı'na tam erişimden daha önemli olduğunda bu seçeneği kullanın.
AUDIT_GUID = uniqueidentifier
Veritabanı yansıtması veya Always On kullanılabilirlik grubuna katılan veritabanları gibi senaryoları desteklemek için, denetime yansıtılmış veritabanında bulunan GUID ile eşleşen belirli bir GUID gerekir. Denetimi oluşturduktan sonra GUID'yi değiştiremezsiniz.
OPERATOR_AUDIT
Şunlar için geçerlidir: Yalnızca Azure SQL Yönetilen Örneği.
Bir destek isteği sırasında sunucunuza erişmesi gerektiğinde denetimin Microsoft destek mühendisi işlemlerini yakalayıp yakalamadığını gösterir.
RETENTION_DAYS = tamsayı
Şunlar için geçerlidir: Yalnızca Azure SQL Yönetilen Örneği ve Azure SQL Veritabanı.
Denetim günlüğü dosyasını depolamak için gereken gün sayısını gösterir.
predicate_expression
Bir olayın işlenip işlenmediğini belirlemek için kullanılan koşul ifadesini belirtir. Koşul ifadeleri, dize bağımsız değişkenlerini sınırlayan 3.000 karakterlik bir uzunlukla sınırlıdır.
event_field_name
Koşul kaynağını tanımlayan olay alanının adı. Denetim alanları sys.fn_get_audit_file açıklanmıştır. , audit_file_offsetve event_timedışındaki file_nametüm alanları filtreleyebilirsiniz.
action_id ve class_type alanları içinde varchar türünde olsa dasys.fn_get_audit_file, bunları yalnızca filtreleme için bir koşul kaynağı olduklarında sayılarla kullanabilirsiniz. ile class_typekullanılacak değerlerin listesini almak için aşağıdaki sorguyu çalıştırın:
SELECT spt.[name], spt.[number]
FROM [master].[dbo].[spt_values] spt
WHERE spt.[type] = N'EOD'
ORDER BY spt.[name];
sayı
Ondalık da dahil olmak üzere herhangi bir sayısal tür. Sınırlamalar, kullanılabilir fiziksel belleğin olmaması veya 64 bit tamsayı olarak temsil edilemeyecek kadar büyük bir sayıdır.
'string'
Koşul karşılaştırmasının gerektirdiği ansi veya Unicode dizesi. Koşul karşılaştırma işlevleri örtük dize türü dönüştürmesi gerçekleştirmez. Yanlış türün geçirilmesi hatayla sonuçlanır.
Remarks
Sunucu denetimi devre dışı durumda oluşturulur.
CREATE SERVER AUDIT deyimi bir işlemin parçasıdır. İşlemi geri alırsanız, deyim de geri alınır.
Permissions
Sunucu denetimi oluşturmak, değiştirmek veya bırakmak için sorumluların veya izni gerekir ALTER ANY SERVER AUDITCONTROL SERVER .
Denetim bilgilerini bir dosyaya kaydettiğinizde, değişiklik yapılmasını önlemeye yardımcı olmak için dosya konumuna erişimi kısıtlayın.
Examples
A. Dosya hedefi ile sunucu denetimi oluşturma
Aşağıdaki örnek, hedef olarak ikili dosya olan ve seçenek içermeyen adlı HIPAA_Audit bir sunucu denetimi oluşturur.
CREATE SERVER AUDIT HIPAA_Audit
TO FILE (FILEPATH = '\\SQLPROD_1\Audit\');
B. Seçenekler içeren bir Windows Uygulaması günlük hedefi ile sunucu denetimi oluşturma
Aşağıdaki örnek, Windows Uygulama günlüğü için hedef kümeyle adlı HIPAA_Audit bir sunucu denetimi oluşturur. Kuyruk her saniye yazılır ve hata durumunda SQL Server altyapısını kapatır.
CREATE SERVER AUDIT HIPAA_Audit
TO APPLICATION_LOG
WITH (
QUEUE_DELAY = 1000,
ON_FAILURE = SHUTDOWN
);
C. WHERE yan tümcesi içeren bir sunucu denetimi oluşturma
Aşağıdaki örnek, örnek için bir veritabanı, şema ve iki tablo oluşturur. adlı DataSchema.SensitiveData tablo gizli veriler içeriyor ve tabloya erişimin denetime kaydedilmesi gerekiyor.
adlı DataSchema.GeneralData tablo gizli veriler içermiyor. Veritabanı denetim belirtimi şemadaki DataSchema tüm nesnelere erişimi denetler.
Sunucu denetimi, sunucu denetimini yalnızca SensitiveData tabloyla sınırlayan bir WHERE yan tümceyle oluşturulur. Sunucu denetiminde bir denetim klasörü olduğu C:\SQLAuditvarsayılıyor.
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
Veritabanında sunucu denetimini master oluşturun:
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
Veritabanında veritabanı denetim belirtimini TestDB oluşturun:
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess]
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH(STATE = ON);
GO
Tablolardan seçim yaparak denetim olayını tetikleme:
SELECT ID,
DataField
FROM DataSchema.GeneralData;
SELECT ID,
DataField
FROM DataSchema.SensitiveData;
GO
Filtrelenmiş içerik için denetimi denetleyin:
SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO
Transact-SQL referans
- Sunucu Denetimini Değiştir
- DROP SERVER AUDIT (sunucu denetimini kaldırma komutu)
- Sunucu Denetim Özelliği Oluştur
- SUNUCU DENETİM ÖZELLİĞİNİ DEĞİŞTİR
- SUNUCU DENETİM ÖZELLİĞİNİ DÜŞÜR
- VERİ TABANI DENETİM BELİRTİMİ OLUŞTUR
- VERİTABANI DENETİM BELİRTİMİ
- VERİTABANI DENETİM BELİRTİMİ SİL
- YETKİ DEĞİŞTİR
İlgili içerik
- sys.fn_get_audit_file (Transact-SQL)
- sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL) (Sunucu dosya denetimleri)
- sys.server_audit_specifications (Transact-SQL)
- sys.server_audit_specification_details (Transact-SQL) - Sunucu Denetim Özellikleri Detayları
- sys.database_denetim_özellikleri (Transact-SQL)
- sys.veritabanı_denetime_özellikleri_ayrıntıları (Transact-SQL)
- sys.dm_server_audit_status (Transact-SQL)
- sys.dm_audit_actions (Transact-SQL)
- sys.dm_audit_class_type_map (Transact-SQL)
- Sunucu Denetimi ve Sunucu Denetim Belirtimi Oluşturma