Cosa succederebbe se una chiave primaria venisse modificata o le autorizzazioni a una stored procedure venissero aggiornate senza che tu ne sia a conoscenza? Il monitoraggio di SQL Server solo con Change Data Capture (CDC) non è sufficiente per rimanere aggiornati sulle modifiche ai database critici. Infatti, senza affidabile, efficiente monitoraggio delle modifiche di SQL Server, semplicemente non è possibile controllare ciò che sta accadendo attraverso i server SQL.
Monitoraggio nativo delle modifiche in SQL Server
SQL Server utilizza un meccanismo di tracciamento sincrono, il che significa che le modifiche vengono registrate una volta che le modifiche del linguaggio di manipolazione dei dati (DML) sono state commesse. Le funzionalità di monitoraggio delle modifiche di SQL Server offerte dagli strumenti nativi forniscono alcune funzioni di monitoraggio delle modifiche; ad esempio, è possibile utilizzare il monitoraggio delle modifiche per vedere chi ha eliminato quali tabelle o quali righe sono state modificate. Ma dovrai scrivere una serie di query in Transact-SQL per ottenere informazioni più dettagliate sul monitoraggio delle modifiche, come i dettagli sui dati modificati, le colonne modificate o le tabelle create dall’utente, e questa attività può facilmente divorare il tuo tempo prezioso. Inoltre, l’abilitazione del monitoraggio delle modifiche può riempire rapidamente il server, quindi è necessario eseguire costantemente la pulizia per evitare di esaurire lo spazio su disco, il che causerebbe problemi di prestazioni e disponibilità.
Per utilizzare SQL Server change tracking, è necessario abilitare change tracking su due livelli nidificati: database change tracking e table change tracking.
Abilitazione del monitoraggio delle modifiche per un database
Affinché il monitoraggio delle modifiche funzioni, il database deve avere almeno il livello di compatibilità di SQL Server 2005. È possibile determinare il numero di versione del database del server eseguendo la query” SELECT @@VERSION”. È necessario attivare il monitoraggio delle modifiche per ciascun database individualmente.
Per abilitare il monitoraggio delle modifiche a livello di database, è possibile utilizzare SQL Server Management Studio o eseguire la seguente query T-SQL:
ALTER DATABASE Accounting2020
IMPOSTA CHANGE_TRACKING = ON
(CHANGE_RETENTION = 3 GIORNI, AUTO_CLEANUP = ON)
Dopo aver abilitato il monitoraggio delle modifiche, è possibile impostare un periodo di conservazione diverso modificando i parametri CHANGE_RETENTION e AUTO_CLEANUP.
Abilitazione del monitoraggio delle modifiche per una tabella
Come per i database, il monitoraggio delle modifiche alle tabelle richiede l’abilitazione del monitoraggio su ciascuna tabella separatamente. Ancora una volta, è possibile farlo in SQL Server Management Studio o con una query come questo esempio:
ALTER TABLE Contracts
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)
Una volta che il monitoraggio delle modifiche è abilitato per una tabella, le informazioni su tutte le righe modificate dalle istruzioni SQL comuni (SELECT, INSERT, UPDATE, DELETE, ecc.) è memorizzato internamente.
Il parametro TRACK_COLUMNS_UPDATED viene utilizzato per impostare il tracciamento delle modifiche per le colonne on o off. Se è attivo, SQL Server memorizzerà ulteriori informazioni su quali colonne sono state aggiornate. Tuttavia, poiché le informazioni sulla colonna di rilevamento vengono aggiunte all’overhead di archiviazione, questa opzione è disabilitata per impostazione predefinita e si consiglia di mantenerla disabilitata per tutte le applicazioni che non richiedono dati storici.
Monitoraggio delle modifiche semplice ed efficiente con Netwrix Auditor
A differenza degli strumenti nativi di monitoraggio delle modifiche che richiedono la scrittura di query e la scansione manuale dei dati, Netwrix Auditor per SQL Server fornisce dashboard e report predefiniti che consentono di individuare facilmente le modifiche e visualizzare tutti i dettagli critici. Ad esempio, è possibile vedere che una colonna che è stata eliminata o un ruolo utente è stato modificato, insieme ai valori prima e dopo di ogni modifica. La ricerca interattiva consente di analizzare rapidamente le modifiche sospette in modo da prevenire l’indisponibilità del database e altre interruzioni.
Netwrix Auditor rende anche facile tenere d’occhio le risorse chiave, come i server con il maggior numero di modifiche e gli utenti che apportano il maggior numero di modifiche. Le sottoscrizioni di report ti tengono aggiornato automaticamente sulla pianificazione che scegli. E non c’è più bisogno di preoccuparsi costantemente della pulizia perché lo storage a due livelli di Netwrix mantiene i dati consolidati di SQL Server change in modo economico per più di 10 anni, garantendo al contempo un accesso rapido e sicuro in qualsiasi momento. Ancora meglio, Netwrix Auditor utilizza un meccanismo di controllo non intrusivo, quindi non degraderà mai le prestazioni del database.