使用数据库的关键部分问题

时间:2013-06-20 10:36:30

标签: c# sql-server critical-section

我有一个在任务调度程序下运行的exe,并计划每周运行一次。此exe存在于2个不同的克隆服务器上[负载平衡],两者都计划在同一个日期时间执行。

这个exe检查数据库中某个表中的一个标志并执行.....问题是在任何情况下只有1个服务器必须执行exe而不是两个....

所以服务器1检查标志并且必须设置它然后执行exe .....这样当服务器2轮询标志时,它意识到第一个已经执行并退出。

现在我的问题是,如何确保检查数据库中的标志的服务器设置它,以便第二个服务器不会获取未设置的值....

类似数据库中的关键部分问题

1 个答案:

答案 0 :(得分:0)

SQL Server具有专门针对此类问题设计的应用锁:http://msdn.microsoft.com/en-us/library/ms189823.aspx

如果您确实想要使用您的值更新表,您可以进行测试并设置一个(隐式)事务:

更新flagstable set flag ='server1',其中flag为null