Audit
Change Data Capture
Change Tracking
Праћење промена унутар SQL Server-a
Марко Радоњић ИИБ
Функционалност доступна од SQL Server 2008(Enterprise Edition)
Заснована је на Extended Events архитектури(All Editions)
Праћење промена унутар SQL Server-a
Audit
Остале методе за надгледање:• Login Audit• C2 Audit• SQL Profiler (Audit Events Class)• SQL Trace• Common Criteria Compliance
Користи се за надгледање активности на нивоу SQL Server инстанце
Server Audit (догађаји на нивоу сервера) Database Audit (догађаји на нивоу базе)
Праћење промена унутар SQL Server-a
Audit
Server / Database Audit Specification
Представља скуп „акција“ које желимо да пратимо над одређеним објектима
• DBCC_GROUP• FAILED_LOGIN_GROUP• BACKUP_RESTORE_GROUP• DELETE• UPDATE
Audit (target)
• File• Security Log• Application Log
Представља објекат у коју се уписују логови везани за надгледане активности
Change Tracking & Change Data Capture
Праћење промена унутар SQL Server-a
Праћење промена над подацима односно добијање сета промењених података пре верзије SQL Server 2008 је подразумевало развијање комплексне инфраструктуре (измене базе и/или апликације)
Неке од области примене:• ЕТL(Extract Transfrom Load) Процеси• Складиште Података(Data Warehouse)• Синхронизација са уређајима без
сталне конекције(Pocket PC)• Архивирање вредности података пре
промене
Change Data Capture(CDC) и Change Tracking Функционалности доступне од верзије SQL Server 2008 које омогућују праћење промена над подацима и механизме за издвајање оних података који су промењени неком од DML(Data Manipulation Language) операција.
Праћење промена унутар SQL Server-a
Change Tracking Change Data Capture(CDC)
Express, Workgroup, Web, Standard, Enterprise, Data Center Enterprise and Data Center
Само детектује да се промена на одређеном реду десила. Не садржи вредност промена
Садржи вредност промена
Не садржи податке о претходним вредностима реда. Садржи податке о претходним вредностима реда
Не ослања са на SQL Server Аgent SQL Server Agent је неопходан за CDC
Може се радити Truncate команда над CT табелом Не може се радити Truncate команда над CDC табелом
Користи TempDB Користи Transaction log (.ldf file)
Табела мора да има примарни кључ Нема рестрикција као CT
Change Tracking & Change Data Capture
Change Data Capture
Праћење промена унутар SQL Server-a
Change Data Capture(CDC)CDC се заснива на читању и бележењу промена на основу трансакционог лога базе (.LDF) односно на основу LSN(Log Sequence Number) бројева.
Приликом конфигурисања CDC креирају се системске табеле, schema CDC као и SQL Аgent JobСелекција промењених података се врши помоћу функција:
SELECT * FROM cdc.fn_cdc_get_net_changes_[schema]_[TableName](from LSN,To LSN,Row Filter)
SELECT * FROM cdc.fn_cdc_get_аll_changes_[schema]_[TableName](from LSN,To LSN,Row Filter)
За манипулацију LSN бројевима користе се следеће функције:
sys.fn_cdc_get_max_lsn()sys.fn_cdc_map_time_to_lsn()sys.fn_cdc_map_lsn_to_time()sys.fn_cdc_increment_lsn()sys.fn_cdc_decrement_lsn()
Change Tracking
Праћење промена унутар SQL Server-a
Change TrackingChange Tracking бележи вредност примарног кључа реда који је промењен као и тип DML операције.
ALTER DATABASE [Database] SET CHANGE_TRACKING = ON
ALTER TABLE [dbo].[Table] ENABLE CHANGE_TRACKING
Change Tracking се конфигурише помоћу DDL Alter команде
SELECT * FROM CHANGETABLE(CHANGES [TABLE], 0)
SELECT CHANGE_TRACKING_CURRENT_VERSION()
За селекцију промењених редова користи се табеларна функција CHANGETABLE()
T-SQL
Праћење промена унутар SQL Server-a
T-SQL komande dostupne od verzije 2005
INTERSECTEXCEPT
SELECT * FROM dbo.Tabela1
SELECT * FROM dbo.Tabela2
ХВАЛА НА ПАЖЊИ