SQL Broker:异步过程执行



我读过这篇伟大的雷穆斯·鲁萨努的文章http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

如何实现这个想法:

我有一个大的主表,用户可以在那里标记为"删除"记录(将字段设置为1)我不能使用SQL作业,因为客户可以使用SQLExpress。

其思想是:当用户在大表中"删除"或"取消删除"记录时,需要将消息发送到队列。一个激活proc"fire-and-forget"proc为主表中的标记记录执行真正的Delete语句——这取决于全部还是部分。

但需要最大限度地避免阻塞。。。。这就是为什么问题:

如何在SQL Server负载最低的情况下执行真正的删除?或者当数据库的活动性最低时?如何在异步进程中检测这些"低数据库加载"时刻?

无法直接将Service Broker激活到工作负载,只能在"低活动"期间激活。

我不能使用SQL作业,因为客户可以使用SQLExpress

虽然SQL Server Express Edition确实缺少SQL代理调度,但也有使用Service Broker会话计时器的解决方案。请参阅SQL Server Express中的调度作业(以及第2部分)。

最新更新