跟踪或通知数据库更改 - 主要是插入和更新
-
11-07-2019 - |
题
每当在数据库中插入或更新记录时,如何跟踪或收到通知?每当数据库发生此类更改时,我想近乎实时地将更改通知外部应用程序。是否有独立于 DBMS 和应用程序编程语言的方法来执行此操作?如果不能,那么尤其是 MS Access 和 MS SQL Server 是否可以实现?当然,我希望避免连续轮询数据库。
解决方案
使用 SQL Server,可以在 SQL Server 本身中加载 DLL,并使用扩展存储过程从该 DLL 调用方法。然后,DLL 可以通知其他应用程序 - 通常通过 TCP 套接字。
其他提示
我认为最新版本的 Microsoft SQL Server 允许您根据服务器条件和事件在 .NET 代码中引发事件。我还没有尝试过,也没有听说过任何“独立于 DBMS”的方法(无需每 X 毫秒轮询一次数据库)。
使用 MS-Access,我可以使用主表中的字段来跟踪记录更改或记录添加,这些字段存储创建或更新记录时的用户名和日期。
您需要使用Windows API来记录用户名,通常在打开总机表单时运行。
我正在努力寻找一种方法来跟踪特定的变化。我的数据库用于项目管理。我想跟踪具体更改的内容,而不仅仅是我现在更改的人员和时间。
我认为这符合原问题的要求。我可以稍后添加读取用户名的 Windows API。
私有sub form_beforeinsert(取消integer)me!userCreated = ucase(currentuser())me!dateCreated = now()end sub sub sub
private sub form_beforeupdate(取消为integer)me!dateModified = now()me!usermodified = ucase(currentuser())end sub sub sub
——迈克
要使用 SQL Server 执行此操作,您可以使用通知服务 - 编写一个 dll,该 dll 订阅来自数据库的数据更新通知,您可以通过某种方式处理这些数据更新。
然而,MS 表示,他们 从 SQL Server 2008 中删除它.
Oracle 有类似的东西(尽管他们倾向于保留自己的技术),但我还没有看到任何与数据库无关的东西。