日期:2014-05-17  浏览次数:20651 次

SQL SERVER 间隔固定时间执行update
有如下场景:
密码输入错误3次后,对该用户锁定(status=1),锁定30分钟后自动解锁(status=0)。
WAITFOR会锁表,所以不能用,还有其他什么办法吗?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

这种人工干预毕竟不够系统功能可靠


通过系统功能如何能实现?


靠机制呗,你不可能写个循环,或者等待一段时间。

其实所不锁定,都没有关系,按照你上面说的,其实在其他时间段都是不锁定的,只有在09:00-09:30是锁定状态,如果在09:00-09:30时间范围,是锁定的,你不用想着去解锁,没必要,你只要写个判断,判断一下当前的时间范围是什么,如果不是在09:00-09:30范围内,就算是锁定状态,那就马上先修改为解锁状态,然后再进行判断。


这个了解。

这样的解决方式是迂回式,不是从根本上解决。


只要能解决就好了,迂回有迂回的好处,如果直接设置,那么必须要就要建一个定时任务,扫描一下,比如1分钟扫描一次,看哪些需要解锁的。

另外,我觉得,这种功能,sql server自身也有,比如,设置了密码策略之后,如果连续输入密码错误,那么就会被锁定,假如需要锁定10天,你觉得sql server会每隔一点时间去扫描,有哪些用户需要解锁,我觉得不太可能,肯定是当这个用户再次登录的时候,或者是有用户去查询状态的时候,也即是有一个事件,触发了,然后系统可能会顺便查看一下,是否有用户需要解锁。