更新db表与一些时间表
本文关键字:时间表 db 更新 | 更新日期: 2023-09-27 18:11:01
我正在使用c#和SqlServer开发简单的拍卖应用程序。
我有一个Auction
实体。为简单起见,它的结构如下:
AuctionId
ItemId
StartPrice
StartDate
Status
CurrentPrice
BidderId
LastBiddedat
A知道它不是正规形式,在这里没有关系。不是生产代码。
我需要的是更新Auction Status
,如果没有任何出价在过去的2分钟。无出价-拍卖状态设置为Inactive
。
我可以通过SqlDependency
跟踪c#代码中的db变化,它工作得很好。
现在我需要一个机制来更新数据库时,拍卖时间到了。为了简单起见,我想在数据库层上这样做。
它可以通过SQL Agent
来完成,甚至有一个例子如何做到这一点,如何为sql查询安排一个每天运行的作业?.
也许你还有别的选择?只是好奇。
常见的解决方案是轮询或实现某种调度器。创建SQL依赖并没有真正的帮助,因为这是由数据库数据更改触发的。你的触发器是"没有变化"。
从应用程序轮询通常是一个坏主意,因为这会在其他问题中产生不必要的网络流量。
正如您提到的,使用内置的SQL Agent Job Scheduler来运行存储过程并更新已有2分钟以上且不活跃的拍卖的状态是最好的主意。这是数据库的一部分,因此将创建最小的网络流量(如果有的话)。它是SQL Server的一部分,因此被设计为快速平稳地运行。它也很容易设置。这是我的建议。