我想构建一个小应用程序,只要更新或插入到SQL服务器数据库中的某个表中,就会弹出托盘通知(或吐司弹出窗口等)。
这样做的最简单方法是什么,因为我想尽可能避免轮询?
答案 0 :(得分:7)
Query Notifications。这是SQL Server功能,允许应用程序订阅更改数据时从服务器推送的通知。它通常通过SqlDependency类来利用。
我最近发布了LinqToCache project,它允许您向LINQ查询添加基于SqlDependency的通知和缓存失效:
var query = (from r in ctx.table select r).AsCached(
"table", new CachedQueryOptions() {
OnInvalidated = (sender, args) {
// the query was invalidated, data has changed
// refresh display or notify user
}
});
答案 1 :(得分:2)
扩展存储过程也是我首先想到的,如果我想在SQL Server本身上运行监控应用程序,可能就是我使用的解决方案。但我猜这可能不是这样。
我建议使用MSMQ作为中间层,我自己,因为它现在几乎与每个版本的Windows一起提供,并且或多或少地为这类事物量身定制。所以,通过这些图层,你有:
这里有从SQL Server访问MSMQ的示例代码:http://www.codeproject.com/KB/database/SqlMSMQ.aspx
答案 2 :(得分:1)
您可以触发extended stored procedure,这会通知您的托盘。
也许这link更好。