gpt4 book ai didi

c++ - 如何监控应用程序的数据库更新?

转载 作者:行者123 更新时间:2023-11-27 23:26:27 25 4
gpt4 key购买 nike

我使用带有 ODBC、C++ 的 SQL Server 数据库。我想检测数据库某些表中的修改:另一个应用程序插入或更新行,我必须检测所有这些修改。它不必是立即触发,可以使用轮询定期检查数据库表的修改。

以下是我认为可以做到的方法,需要您的意见,无论这是标准/正确的方法,还是存在任何更好的方法。

我想到的是:我在 SQL Server 中添加触发器,在进行任何修改时,它会将修改/添加的行的标识符插入到特殊表中,我会定期从我的应用程序中检查它。假设有 3 个表:Customers、Products、Services。我将制作三个附加表:Change_Customers、Change_Products、Change_Services,并将插入相应表的修改行的标识符。然后我会定期从我的应用程序中读取这些 Change_* 表并删除处理过的记录。

现在,如果您同意上述解决方案是正确的,我还有另一个问题:为我希望监控的每个表设置单独的 Change_* 表更好,还是使用一个包含以下内容的胖 Changes 表更好?所有表的更改。

最佳答案

Query Notifications是旨在完全您所描述的技术。您可以通过众所周知的 SqlDependency 来利用托管客户端的查询通知。类,但也有 native Ole DB 和 ODBC 方式。参见 Working with Query Notifications ,有关 SSPROP_QP_NOTIFICATION_MSGTEXT (OleDB) 和 SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (ODBC) 的段落。参见 The Mysterious Notification了解查询通知的工作原理。

这是唯一适用于任何类型更新的无轮询解决方案。触发器和更改轮询具有严重的可伸缩性和性能问题。 Change Data Capture 和 Change Tracking 实际上涵盖了不同的主题(为偶尔连接的设备同步数据集,例如 Sync Framework)。

关于c++ - 如何监控应用程序的数据库更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com