如何从 SQL Express 2012 获取数据更改通知?

How to get data change notifications from SQL Express 2012?

我们有客户端-服务器应用程序,其中客户端内置于 Delphi XE4 中,服务器使用 SQL Server 2012 Express 版。我的 delphi 应用程序(使用 WMI 处理服务器事件)能否从 Express 版本接收数据更改通知?

文档说 Express 版支持 service broker 作为 "Client Only"。

是否可以在不借助任何其他 sql 服务器版本的情况下使用 Express 版本实现上述功能。

您不能仅通过 Express 版本使用此功能。

您至少需要标准版才能获得 SQL Server Service Broker 后端和 运行。一旦您拥有一个 Standard editon 实例,其他 Express edition 实例就可以参与。

是的,你可以。 Query Notifications and SQLDependency are fully functional in Express editions. Working with Query Notifications 解释了如何直接从 OleDB(通过 SSPROP_QP_NOTIFICATION_TIMEOUTSSPROP_QP_NOTIFICATION_MSGTEXTSSPROP_QP_NOTIFICATION_OPTIONS)和从 ODBC(通过 SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUTSQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 使用查询通知和 SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS)。我不知道 Delphi 是否在更高级别公开查询通知,或者您是否必须针对低级别 ODBC 或 OLEDB 进行编码。真正可用的选项通过 C# 等中的托管驱动程序公开,通过 SQLDependency class。

我在 link MartynA 中看到 XE8 支持查询通知。它应该与 Express 一起使用。

Express 的 'client only' 限制严格指 Service Broker 远程通信(在 SQL 服务器实例之间交换消息),查询通知不需要此功能。