Salah satu metode sederhana yang saya've yang digunakan di masa lalu pada dasarnya hanya membuat kedua tabel dan struktur cermin yang saya ingin audit, dan kemudian membuat update/delete trigger pada tabel utama. Sebelum rekor ini diperbarui/dihapus, keadaan saat ini disimpan untuk audit tabel melalui pemicu.
Sementara efektif, data dalam audit meja adalah bukan yang paling berguna atau sederhana untuk laporan off. I'm bertanya-tanya jika ada yang memiliki metode yang lebih baik untuk audit perubahan data?
Seharusnya't terlalu banyak update dari catatan-catatan ini, tapi itu adalah informasi yang sangat sensitif, sehingga sangat penting untuk pelanggan bahwa semua perubahan yang telah diaudit dan mudah melaporkan pada.
Berapa banyak menulis vs. membaca tabel ini(s) yang anda harapkan?
I've digunakan tunggal audit tabel, kolom-kolom Tabel, Kolom, OldValue, NewValue, Pengguna, dan ChangeDateTime - generic cukup untuk bekerja dengan setiap perubahan lain dalam DB, dan sementara BANYAK dari data yang tertulis di meja itu, laporan yang data-data yang jarang cukup bahwa mereka bisa berjalan pada rendah-menggunakan periode hari.
Ditambahkan: Jika jumlah data vs. pelaporan adalah kekhawatiran, audit meja bisa direplikasi ke read-only database server, yang memungkinkan anda untuk menjalankan laporan kapanpun diperlukan tanpa bogging bawah master server dari melakukan pekerjaan mereka.
Kami menggunakan dua desain meja untuk ini.
Satu meja memegang data tentang transaksi (database, nama tabel, skema, kolom, aplikasi yang memicu transaksi, nama host untuk login yang memulai transaksi, tanggal, jumlah baris yang terpengaruh dan beberapa lagi).
Kedua tabel ini hanya digunakan untuk menyimpan perubahan data sehingga kita dapat membatalkan perubahan jika diperlukan dan melaporkan tua/nilai-nilai baru.
Pilihan lain adalah dengan menggunakan alat pihak ketiga untuk ini seperti ApexSQL Audit atau Perubahan Data Capture fitur di SQL Server.
Saya telah menemukan dua link yang berguna:
Menggunakan CLR dan single audit tabel.
Menciptakan generik audit dengan trigger SQL 2005 CLR
Menggunakan pemicu dan terpisah audit tabel untuk masing-masing tabel yang diaudit.
Bagaimana cara audit perubahan data SQL Server?
Apakah ada built-in audit paket? Oracle memiliki paket yang bagus, yang bahkan akan mengirim audit perubahan ke sebuah server terpisah di luar akses dari setiap orang jahat yang memodifikasi SQL.
Mereka adalah contoh mengagumkan... ini menunjukkan bagaimana untuk mengingatkan pada siapa pun memodifikasi audit tabel.
Saya menggunakan pendekatan yang dijelaskan oleh Greg di jawaban dan mengisi audit meja dengan prosedur yang disimpan disebut dari tabel pemicu.