2009-04-27 12 views
13

sto guardando cambiare il nostro processo di revisione per il nostro database SQL Server 2005 e mi sono imbattuto in Change Data Capture in SQL Server 2008.Revisione dati di SQL Server modifica

Questo appare come una buona idea, e io sono tentato di provarlo, ma prima che lo faccia qualcuno lo ha usato in un ambiente commerciale e quali sono i tuoi pensieri?

Ho notato che quando stavo leggendo su CDC nella guida in MS, ha detto che i dati di audit di solito conservati per un paio di giorni. Non è possibile qui, mi piacerebbe mantenere i dati a tempo indeterminato, qualcuno sa di problemi con questo approccio?

Se questa non è una buona soluzione per ragioni per cui sono a conoscenza, avete altre soluzioni per il controllo delle modifiche dei dati. Sono contento di usare un sistema che possa essere implementato su tutti i tavoli che desidero.

che sto cercando di base: "Prima, dopo, che per, Quando" le informazioni per eventuali modifiche.

risposta

9

Il CDC dovrebbe è solo un mezzo per un fine, a mio parere. Ho implementato soluzioni di audit trail in passato e hanno coinvolto l'utilizzo di Trigger. Questo doveva essere molto complicato e performante per database altamente transazionali.

Quello che il CDC vi offre è la possibilità di registrare i dati di audit senza l'uso di trigger, ma è comunque necessario un mezzo per prendere i dati in una tabella permanente. Questo può essere fatto con una tabella mirror per ogni tabella da controllare o una singola tabella che tiene traccia di tutte le modifiche a tutte le tabelle (ho fatto quest'ultima).

Ecco alcuni collegamenti con ulteriori informazioni su come è stato fatto utilizzando i trigger:
SQL Audit Trail
sql-server-history-table-populate-through-sp-or-trigger

Ecco una soluzione di monitoraggio di controllo open source che utilizza LINQ: DoddleAudit

+0

vedo, ho appena letto un po 'di più sui CDC e capire quello che stai dicendo. Sembra che i benefici del CDC siano asincroni. Mi piace molto la tua idea del tavolo unico per tenere traccia di tutti i cambiamenti, tuttavia mi sembra che con "database altamente transazionali" questa tabella possa diventare molto grande, molto rapidamente. – MrEdmundo

+0

Ehi, finalmente ho avuto l'opportunità di dare un'occhiata a quello che stavi dicendo. Mi chiedevo come tieni traccia di chi ha apportato le modifiche al tuo sistema? In linea di principio CDC sembra essere abbastanza facile da configurare e fornisce alcune funzionalità interessanti. – MrEdmundo

+0

Nella mia configurazione, ogni tabella ha 4 colonne aggiuntive: CreatedDate, CreatedBy, UpdatedDate, UpdatedBy. Riempio le ultime 2 colonne con il nome utente/la data nelle mie istruzioni di aggiornamento SQL. Io uso che determina chi ha cambiato cosa. –

0

È possibile modificare il processo Sql Server che rimuove le modifiche acquisite dopo due giorni. Puoi anche estendere questo tempo di pulizia secondo la tua convenienza, o renderlo permanente.

0

Sto utilizzando gli script this, è possibile definire quali sono le tabelle a cui si desidera che l'audit o tutte le tabelle definiscano nel database. Inoltre, tvf per la visualizzazione cronologica di record singoli. Controlla il link, per i dettagli.

6

abbastanza tardi, ma speriamo che sia utile per altri lettori ...

Qui di seguito sono diverse tecniche per il controllo con i suoi pro e contro. Non esiste una soluzione "giusta" adatta a tutti. Dipende dai requisiti e dal sistema che viene controllato.

Trigger

  • Vantaggi: relativamente facile da implementare, un sacco di flessibilità su ciò che è oggetto di revisione contabile e di come vengono memorizzati i dati di controllo perché si ha il pieno controllo
  • Svantaggi: It Gets disordinato quando hai un sacco di tavoli e ancora più inneschi. La manutenzione può diventare pesante a meno che non ci sia qualche strumento di terze parti per aiutare. Inoltre, a seconda del database può causare un impatto sulle prestazioni.

CDC

  • Vantaggi: molto facile da implementare, nativamente supportato
  • Svantaggi: Disponibile solo nella versione Enterprise, non molto robusto - se si cambia lo schema tuoi dati saranno persi. Non consiglierei questo per mantenere un audit trail lungo termine

Tracce

  • Vantaggi: un sacco di flessibilità su quello che viene sottoposto a revisione contabile. Anche le dichiarazioni selezionate possono essere controllate.
  • Svantaggi: È necessario creare un'applicazione separata per analizzare i file di traccia e raccogliere informazioni utili da questi.

lettura log delle transazioni

  • Vantaggi: tutto quello che dovete fare è quello di mettere il database in modalità di recupero completo e tutte le informazioni saranno memorizzate nel registro delle transazioni
  • Svantaggi : È necessario un lettore di log di terze parti per leggerlo efficacemente

Ho lavorato con diversi strumenti di controllo da ApexSQL ma ci sono anche buoni strumenti da Idera (direttore di conformità) e Krell software (audit omni)

ApexSQL Audit - trigger strumento di auditing basato. auditing generato e gestisce innesca

ApexSQL Log - Consente di controllo attraverso la lettura del log delle transazioni

Problemi correlati