我创建了一个应用程序来将SMS文本存储到数据库表中。由于我无法预测何时会收到短信;我需要找到一种在数据库表中添加新行时得到通知的方法。我正在使用MSSQLServer 2005和使用C#的Windows窗体应用程序。有人可以建议我这样做吗?谢谢。

最佳答案

尽管有压倒性的声音支持这种错误的方法,但是您不能使用触发器,至少不要直接通知应用程序。触发器根本无法连接回应用程序以通知更改,并且“使用套接字”或“使用邮件”之类的解决方案充其量只是幼稚的,在现实环境下会失败。

基本上,您有三种选择:


汇集变化。最容易实现,只需定期查询以查看是否出现新记录。缺点是:1)有时很难检测到更改,具体取决于您的数据模型架构; 2)很难在延迟和负载之间取得平衡,即。您应该多久轮询一次。
通知插入应用程序。这些记录由应用程序插入,具有插入记录的代码也通知您的应用程序。要求更改通常不受您控制的代码。
使用Query Notifications


第四种选择是使用触发器将消息发送到本地队列,并使应用程序专用于后台在WAITFOR(RECEIVE...)中等待(这与轮询不同),但是最好利用查询通知和SqlDependency

10-02 01:29
查看更多