【发布时间】:2012-04-30 05:51:25
【问题描述】:
我想减少我的应用程序解决方案(许多应用程序、1 个数据库、一些第 3 方)中的轮询,客户想要最新的 GUI 状态正在发生的事情。是否可以通过 .NET 代码将事件处理程序添加到使用 SQL Server 技术的表或数据库中?
以下是我遇到的一些解决方案:
- 具有外部激活功能的 SQL Server Service Broker - 仅启动新应用程序,而不是真正的“事件处理程序”类型的场景
- CLR 存储过程 - 功能有限,显然在获取 GUI 状态屏幕的事件时会遇到同样的问题
- 去自定义 - 我可以做一些疯狂的事情,比如让 SQL Server 在一个文件夹中创建一个文件(使用 XP 命令 shell),当一个合格的事件发生时,然后让一个
FileSystemWatcher对象获取文件更改事件并以这种方式触发它,但不知何故闻起来很糟糕。
【问题讨论】:
-
几天前我正在考虑这个问题,就我而言,我需要能够在 db 对象的定义发生更改时进行通知。我想知道是否可以在表或视图上添加缓存依赖项,并使用它来跟踪事情何时发生变化。可能值得研究。或者它最终也可能闻起来很臭。 msdn.microsoft.com/en-us/library/…
-
为什么你不能在 sys.objects 中查询最近 x 中被修改的任何东西?
-
因为那是轮询。如果我每隔一秒检查一次数据库,看看是否发生了变化以获得预期的效果,那么这对服务器来说是很多额外的工作。当您正在观察的事情发生时,让某些事情通知您会更有效率。推/拉。
-
抱歉,我的意思是 SqlDependency (msdn.microsoft.com/en-us/library/…)。谢谢@ChrisShain ;-) 我正在等待他的回复,然后再开始为我的目的进行调查。
标签: .net sql-server