Làm cách nào để ghi nhật ký thay đổi dữ liệu trong Access ở cấp bảng?


8

Tôi hỗ trợ cơ sở dữ liệu Access cho một tổ chức phi lợi nhuận. Chúng tôi có một số vấn đề với dữ liệu thay đổi một cách bí ẩn, và đã có một số, ừm, tranh luận thân thiện về việc liệu điều này có phải do người dùng không biết nhiều về máy tính nhất hoặc do một số xử lý nền của tôi.

Tôi đã thêm một số kiểm tra ở cấp UI cho các điều kiện này, nhưng tôi muốn đặt một số kiểm tra ở cấp bảng cơ sở dữ liệu để ghi nhật ký khi các trường nhất định được thay đổi. Bằng cách này, tôi sẽ biết về sự thay đổi cho dù nó được bắt đầu bởi người dùng hay chỉ từ một truy vấn cập nhật đang chạy trong nền. Thông thường tôi sẽ sử dụng một trình on updatekích hoạt, nhưng theo hiểu biết của tôi thì Access không hỗ trợ các trình kích hoạt. Có bất kỳ chức năng ghi nhật ký hoặc kích hoạt nào khác có sẵn trong Access không?

Câu trả lời:


4

Thật không may, Microsoft Access không có trình kích hoạt hoặc bất kỳ thứ gì thậm chí giống với trình kích hoạt. Ngoài đỉnh đầu của tôi, bạn có một vài lựa chọn không hấp dẫn:

  • Tạo DateModifiedUserModifiedcột và cập nhật mã của bạn để bao gồm các giá trị này. Nhược điểm là bạn sẽ chỉ biết người cuối cùng đã cập nhật một bản ghi và sẽ không có lịch sử để xem ..
  • Giữ giao diện truy cập của bạn và chuyển các bảng của bạn sang mặt sau của SQL Server Express. Bằng cách này, bạn sẽ có thể sử dụng các trình kích hoạt (cũng như các công việc sao lưu và những thứ hay ho khác).

4

Ngoài phương pháp LittleBulkTables, còn có tùy chọn thứ ba, bao gồm tạo một _auditbảng cho mỗi bảng thông thường và viết toàn bộ logic để hỗ trợ chúng, để khi mọi thứ được thay đổi, bạn chèn một bản ghi vào các bảng đó để làm như vậy. (bạn đã biết khi bạn lưu / cập nhật / xóa hồ sơ, đúng không?)

Cấp, đây là cách "cơ sở dữ liệu lớn hơn" làm điều đó, nhược điểm ở đây là rất nhiều logic bạn phải làm thủ công để mô phỏng công việc kiểu kích hoạt trên máy chủ.


4

Lưu ý rằng, ví dụ: SQL Server Express là miễn phí và có khả năng là sự thay thế thả xuống cho Access. Điều này sẽ cung cấp cho bạn chức năng kiểm toán mà bạn cần. Tôi không nghĩ cách tiếp cận "bảng kiểm toán" là khả thi; nó giả định rằng bất kỳ ai kết nối với cơ sở dữ liệu đều thực hiện thông qua ứng dụng khách "chính thức" có logic đó. Với các trình kích hoạt, không có cách nào để lấy dữ liệu mà không cần bắn từ bất kỳ máy khách ngẫu nhiên nào.

Tùy chọn thứ ba là Wireshark hoặc tương tự để thực sự xem lưu lượng giữa máy khách và cơ sở dữ liệu (Tôi giả sử rằng đây thực sự sẽ không phải là TDS mà là giao thức chia sẻ tệp?) Sau đó bạn có thể xem chính xác ai làm gì và khi nào và từ máy nào. Nhược điểm của việc này là nó đòi hỏi nhiều dung lượng lưu trữ, một số kịch bản để thực hiện phân tích và có thể ảnh hưởng đến hiệu suất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.