MS Access 数据库 (.mdb) 中表的审计跟踪

Posted

技术标签:

【中文标题】MS Access 数据库 (.mdb) 中表的审计跟踪【英文标题】:Audit trail of a table in MS Access database(.mdb) 【发布时间】:2013-12-06 13:26:19 【问题描述】:

我有 mdb 格式的 ms 访问文件。我希望在一张表上启用审计跟踪。对于每次更改,我都需要修改审计跟踪表中的行详细信息。

这里的问题是,表不使用表单来更新/插入/删除并且它具有复合主键。如果我们使用 .accdb 格式(2010 访问-通过启用数据宏),我们可以启用审计跟踪。 但我不想更改现有的文件格式。有没有办法做到这一点?请提出建议。

【问题讨论】:

【参考方案1】:

不,你不能单独使用 Access 来做你描述的事情。

如果您坚持保持.mdb 文件格式,那么您不能使用数据宏,因此您可以写入审计表的唯一方法是通过表单后面的 VBA 代码。直接对数据表所做的任何更改都不会被审计。

如果您将后端数据库转换为 Access 2010 .accdb,那么您可以使用数据宏来更新审计表,但审计表将不安全。用户需要对审计表进行写访问,以便数据宏可以更新它。但是,如果他们可以通过数据宏间接写入审计表,他们也可以直接写入审计表。恶意用户可以通过在更新数据表后简单地更改审计表来规避审计。 (而且,通过逻辑扩展,无法审计对审计表的更改。)

一种可能的解决方法是将数据表保留在 Access 2010 中,并将审计表放在一个真正安全的位置,例如 SQL Server 数据库。不幸的是,这不起作用,因为数据宏无法更新链接表。

因此,为了获得可靠且有意义的审计功能,您必须将数据表移动到安全的后端,如 SQL Server(或者可能是 mysql,或任何数量的其他选项),设置适当的权限数据和审计表,并使用触发器之类的机制来维护审计表。您可以继续使用 Access 作为前端接口(通过 ODBC 链接表到后端数据库),但安全和审计功能必须由后端处理,而不是 Access。

【讨论】:

非常感谢戈德,期待。只是尝试找出方法如果我错过任何方法。

以上是关于MS Access 数据库 (.mdb) 中表的审计跟踪的主要内容,如果未能解决你的问题,请参考以下文章

java直接存取MS Access的mdb数据库文件

Delphi:在没有 Ms Access 的情况下创建 Access DB (.mdb)

如何在 MS Access 2010 中将 ACCDB 转换为 MDB

MS access mdb 文件第一次从 Access 2007 打开时处于“修复”状态

如何使用 C# 查询远程 MS ACCESS .mdb 数据库

ms access 2003 .mdb 无法查看表