我一直在做一些研究,我可以看到这个系统的大部分管道但是我不确定当表中的数据发生变化时,sql server 如何知道何时将消息发送回任何侦听器(应用程序)。我将首先解释我所理解的内容,直到我迷路为止。
1)需要在数据库上启用Service Broker,并且需要设置一些权限。
2)应该部署数据库模式。
3) 使用 aspnet_regsql.exe,为需要缓存数据的数据库和表启用 sql 缓存依赖项(此步骤创建一个表来跟踪更改并在表上触发以捕获更改并增加该表中的值)。
4)在.net应用中设置sql缓存依赖。例如,在 Web 应用程序中,您需要为轮询时间、连接字符串等添加配置值;在 global.asax.cs 中启动/停止依赖项,然后在将项目添加到缓存时添加 sql 缓存依赖项。
4a) 启动依赖项时发生的部分情况是,为队列、服务和存储过程设置了基础设施,以便之后进行通信和清理。使用 Sql Query Profiler,您可以看到正在建立连接并在服务上设置通信通道,以便应用程序接收来自 sql server 的消息。
5)这是我感到困惑的地方。此时,我已经在我的应用程序缓存中缓存了一个项目,其中引用了对基础表的 sql 缓存依赖项,以便我的应用程序可以在该行发生更改时接收更改。如果我在该行上手动运行更新,我可以看到触发器被命中,并且跟踪表中的值增加了 1。但是,我没有看到任何返回到应用程序的通信,在 sql 查询分析器上没有任何内容,也没有是从缓存中删除的项目。我也看不到数据库队列中的任何内容(动态应用程序队列和标准错误/传输队列都没有)
我的问题是,什么在监视数据库中的跟踪表,以便可以将消息发送回关注此数据更改的 sql 依赖项?
非常感谢任何帮助...我一直在搜索许多在线参考资料,但找不到任何具体的解释。