SQL Server:等待新行

时间:2012-04-06 18:15:35

标签: .net sql-server database locking service-broker

如何等待.NET客户端应用程序中出现在SQL Server表中的新行?

背景:我想基于表构建一个消息队列。我不想使用Service Broker,因为我希望消息的结构和强类型。使用普通表我也可以与其他表有关系。

3 个答案:

答案 0 :(得分:4)

正常的方法是使用轮询,但如果你真的需要立即事件,你可以使用SqlDependency类在查询结果发生变化时获取事件。

答案 1 :(得分:2)

您需要进行投票或获得通知。

轮询将要求客户端定期查询表,使用谓词或count(*)。这可能不是一个很好的解决方案。

它可能是一个便宜但有用的通知系统,可以在表中放置一个触发器并将消息发送给客户端中的侦听器。

答案 2 :(得分:1)

在我们的应用程序中,我们使用System.Threading.Timer来轮询数据库表。一旦有新消息可用,它就会被处理。如果处理成功,则会从DB中删除消息。