c++ - 在 SQL Server 表中进行更改时通知 C++ 应用程序

标签 c++ sql sql-server-2005

我以前发过这个,但没有得到符合我要求的合适答案。我正在寻找一种技术来在对 SQL Server 表进行更改时通知 C++ 应用程序。我们的中间层是 C++,我们不打算迁移到 .NET 基础设施,这意味着我们不能使用 SQLDependency 或 SQL Notification Servers。我们暂时还坚持使用 SQL Server 2005,它也消除了 SQL Service Broker 外部激活(在 SQL 2008 中引入)。

为了更广泛地了解我正在努力实现的目标:我们的数据库正在更新新信息;每当收到一条新信息时,我们都希望将其推送到 C++ 应用程序,以便其仪表板为用户反射(reflect)最新数据。

我们知道我们可以通过让 C++ 应用程序轮询数据库来做到这一点,但我认为这是低效的架构,并且希望让 SQL 将信息或通知推送到 C++。

最佳答案

您实际上可以使用 C++ 中的查询通知。 SQLNCLI10 的 OleDB 和 ODBC 客户端以及 SQLNCLI 提供程序都支持查询通知。参见 Working with Query Notifications ,在页面的后半部分,您将找到用于 OleDB 行集的 SSPROP_QP_NOTIFICATION... 内容和用于 ODBC 语句的 SQL_SOPT_SS_QUERYNOTIFICATION... 内容。因此,从 C++ 中间层订阅通知是绝对可行的。难题的第二部分是实际获取通知,无非就是发布 RECEIVE。和等待。换句话说,您可以在 OleDB 或 ODBC 上用纯 C++ 滚动您自己的 SqlDepdency。通知中间层后,更新客户端显示就轻而易举了。

在检测数据变化的所有替代方法中,您找不到比查询通知更好的方法了。

顺便说一句,您应该绝对避免的一件事是通过触发器通知客户(哦,恐怖...)。

关于c++ - 在 SQL Server 表中进行更改时通知 C++ 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158839/

相关文章:

c++ - 抑制警告 : possible loss of data - caused by truncation through casting 的单个实例

php - mysql查询未知列错误

MySQL 查询数据库大小

mysql - 如何使用 C#.NET Winform 应用程序从 mysql 数据库返回多个结果集

c# - LINQ 模型的问题 - 无法将 NULL 分配给可空 bool 值!

c++ - 访问 ".txt"文件中的信息并转到确定的行

c++ - 所有最近的较小值

sql - 为什么我在使用更新级联时出现错误?

sql-server-2005 - SQL Server 2005 的 SQL 提示替代品?

c++ - OpenGL:从许多帧缓冲区纹理中读取稀疏像素数据的有效方法?