1

我想减少我的应用程序解决方案(许多应用程序、1 个数据库、一些第 3 方)中的轮询,客户想要最新的 GUI 状态正在发生的事情。是否可以通过 .NET 代码将事件处理程序添加到使用 SQL Server 技术的表或数据库中?

以下是我遇到的一些解决方案:

  • 具有外部激活的 SQL Server Service Broker - 仅启动新应用程序,而不是真正的“事件处理程序”类型的场景
  • CLR 存储过程 - 功能有限,显然在获取 GUI 状态屏幕的事件时会遇到同样的问题
  • 去自定义 - 我可以做一些疯狂的事情,比如让 SQL Server 在一个文件夹中创建一个文件(使用 XP 命令 shell),当一个合格的事件发生时,一个触发器,然后让一个FileSystemWatcher对象拾取文件更改事件并以这种方式触发它,但不知何故闻起来很糟糕。
4

1 回答 1

3

您可能想查看SqlDependency。唯一需要注意的是,正如文档所述,

SqlDependency 设计用于 ASP.NET 或中间层服务,在这些服务中,相对少量的服务器对数据库具有活动的依赖项。它不是为在客户端应用程序中使用而设计的,在客户端应用程序中,成百上千的客户端计算机将为单个数据库服务器设置 SqlDependency 对象。如果您正在开发的应用程序在数据更改时需要可靠的亚秒级通知,请查看 SQL Server 联机丛书中的“规划通知”主题中的规划有效的查询通知策略和查询通知的替代方案部分。

一般来说,尽管我发现上述陈述对于大多数 SQL Server 客户端应用程序都是正确的,所以希望这不应该是一个问题。

于 2012-04-18T18:46:02.810 回答