Merhabalar :)
Audit Yazı dizimizin
2.bölümü ile karşınızdayız. Bir önceki bölümde "Audit nedir?", "Nasıl kurulur?" sorularının cevabını vermeye çalıştık.
Yazımızın
1.bölümüne gitmek için :
Nedir Bu SQL Server AUDIT? (Bölüm 1)
Bu bölümüzde, Auditi’imizin analizini yapmaya çalışacağız. İlk olarak bakalım bir önceki bölümümüzde kurduğumuz Audit’imizi kurabilmiş miyiz? Bunun için; fn_get_audit_file fonksiyonu, Audit’imizin için en sık kullanacağımız fonksiyon olabilir. Fonksiyona, Audit’imizin Path’ini vererek aşağıdaki gibi çalıştırıyoruz.
select * from fn_get_audit_file ('D:\Audit\*.sqlaudit',default,default)
Bu fonksiyon sayesinde Audit’imize düşen logları görebiliriz. Sorguyu kendimize göre düzenleyerek, daha okunabilir bir hale getirebiliriz.
select event_time, object_name, statement, database_name, class_type, session_server_principal_name, server_principal_name, action_id, succeeded, session_id
from fn_get_audit_file ('D:\Audit_Deneme\*.sqlaudit',default,default)
order by 1 desc
Tablodaki kolonları inceleyecek olursak, yapılan işin ne zaman yapıldığını, hangi statement'ın çalıştığını, kim tarafından yapıldığını, yaptığı işin başarılı olup olmadığı gibi soruların cevabını bulabiliriz.
DMV lerle inceleyecek olursak;
select * from sys.dm_audit_class_type_map
fn_get_audit_file fonksiyonundan dönen class type seçeneklerini inceleyebilmemize olanak sağlayan bir DMV.
select * from sys.server_audits
select * from sys.server_audit_specifications
select * from sys.server_audit_specification_details
DMV leri sayesinde, auditlerimizin detayını görüntüleyebiliyoruz.
Şimdi, Auditimizi test etme zamanı:) Bakalım, gerçekten de loglayacak mı?
Çalışma amaçlı bir DB oluşturuyorum.
CREATE DATABASE BAKALIM_OLCAKMI
Audit'imize bakalım. İstediğimiz şekilde loglamış mı?
select event_time, object_name, statement, database_name, class_type, session_server_principal_name, server_principal_name, action_id, succeeded, session_id
from fn_get_audit_file ('D:\Audit_Deneme\*.sqlaudit',default,default)
order by 1 desc
Bu seferki denememizde tablo create, alter, drop işlemlerini deniyoruz.
--Tablo create
USE [BAKALIM_OLCAKMI]
GO
CREATE TABLE [dbo].[Audit_Deneme](
[column_1] [int] NOT NULL,
[column_2] [int] NULL
) ON [PRIMARY]
--Tablo alter(kolon ekleme)
ALTER TABLE dbo.Audit_Deneme
ADD deneme int NULL
--Tablo drop
DROP TABLE dbo.Audit_Deneme
Az evvelki scriptimizi yeniden çalıştırıyoruz. Bakalım loglamış mı?
Şimdi de yeni bir login oluşturup, daha sonrasında drop ederek loglayacak mı bakalım :)
--Login create
USE [master]
GO
CREATE LOGIN [AuditDeneme] WITH PASSWORD=N'12345',
DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
--Login drop
DROP LOGIN [AuditDeneme]
GO
Aynı şekilde, sizler de SP, function, Index create ederek, alter ya da drop yaparak deneyebilirsiniz. Logladığını göreceksiniz :)
Geldik bir yazımızın daha sonuna. Umarım sizlere faydalı olabilmişizdir. Bir sonraki yazı dizimizde görüşmek üzere. Soğuklar da geliyor, kendinize iyi bak��n, Yoda’nın tabiriyle “DBA hastalanmaz”. Geçen sene beni nasıl şartladıysa “DBA hastalanmaz” diye kendime telkin ede ede hastalanmadım da gerçekten :D
Sağlıklı, bol motivasyonlu günleriniz olsun :)