Bagaimana cara mencatat perubahan data di Access di tingkat tabel?


8

Saya mendukung database Access untuk organisasi nirlaba. Kami memiliki beberapa masalah dengan data yang berubah secara misterius, dan ada beberapa, um, perdebatan ramah tentang apakah ini disebabkan oleh pengguna yang bukan yang paling melek komputer atau oleh beberapa pemrosesan latar belakang saya.

Saya telah menambahkan beberapa cek di level UI untuk kondisi ini, tetapi saya ingin menaruh beberapa cek di level tabel database untuk login ketika bidang-bidang tertentu diubah. Dengan cara ini saya akan tahu tentang perubahan apakah itu diprakarsai oleh pengguna atau hanya dari permintaan pembaruan yang berjalan di latar belakang. Biasanya saya akan menggunakan on updatepemicu, tetapi setahu saya Access tidak mendukung pemicu. Apakah ada fungsi pencatatan atau pemicu lain yang tersedia di Access?

Jawaban:


4

Sayangnya, Microsoft Access tidak memiliki pemicu, atau apa pun yang menyerupai pemicu. Dari atas kepala saya, Anda memiliki beberapa pilihan yang tidak menarik:

  • Buat DateModifieddan UserModifiedkolom, dan perbarui kode Anda untuk memasukkan nilai-nilai ini. Kelemahannya adalah Anda hanya akan tahu orang terakhir yang memperbarui catatan, dan tidak akan memiliki riwayat untuk melihat ..
  • Jaga agar ujung depan Akses Anda, dan port tabel Anda ke ujung belakang SQL Server Express. Dengan cara ini, Anda akan dapat menggunakan pemicu (serta pekerjaan cadangan dan hal-hal baik lainnya).

4

Selain metode LittleBobbyTables, ada opsi ketiga, yang melibatkan pembuatan _audit tabel untuk setiap tabel biasa dan menulis logika lotta keseluruhan untuk mendukung mereka, sehingga ketika sesuatu berubah, Anda memasukkan catatan ke tabel tersebut untuk melakukannya. (Anda sudah tahu kapan Anda menyimpan / memperbarui / menghapus catatan, ya?)

Memang, ini adalah bagaimana "database lebih besar" melakukannya, sisi negatifnya di sini adalah banyak logika yang harus Anda lakukan secara manual untuk mensimulasikan kerja tipe-trigger pada server.


4

Perhatikan bahwa mis. SQL Server Express gratis dan berpotensi menjadi pengganti akses masuk. Ini akan memberi Anda fungsi audit yang Anda butuhkan. Saya tidak berpikir pendekatan "tabel audit" layak; itu mengasumsikan bahwa siapa pun yang terhubung ke database melakukannya melalui klien "resmi" yang memiliki logika itu. Dengan pemicu tidak ada cara untuk mendapatkan data tanpa mereka melepaskan dari klien acak.

Pilihan ketiga adalah Wireshark atau yang serupa untuk benar-benar mengawasi lalu lintas antara klien dan database (saya berasumsi bahwa ini sebenarnya bukan TDS tetapi protokol berbagi file?) Maka Anda dapat melihat dengan tepat siapa yang melakukan apa dan kapan dan dari mesin apa. Kelemahannya adalah ini membutuhkan banyak penyimpanan, beberapa skrip untuk melakukan analisis, dan dapat berdampak pada kinerja.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.