2014-10-17 36 views
2

我看了这个伟大的莱姆斯Rusanu的文章 http://rusanu.com/2009/08/05/asynchronous-procedure-execution/SQL经纪人:异步程序执行

如何实现这个想法:

我有一个大的主表,用户可以标记“为删除”记载有(将字段设置为1) 我无法使用SQL作业,因为客户可以使用SQLExpress。

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

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

如何真正执行删除时,SQL Server有一个最低的负载?或者当数据库的活动最低? 如何检测异步过程中的'低数据库加载'时刻?

回答

1

无法将Service Broker激活直接同步到工作负载,并且只能在“低活动”期间激活。

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

虽然是真实的SQL Server Express Edition的SQL缺乏调度代理,也有使用Service Broker的conversation timers变通。见Scheduling Jobs in SQL Server Express(和part 2)。