Уважаемый сэр, я создаю форму входа в систему, в которой, если вы введете пароль 3 раза неправильно, ваша учетная запись будет заблокирована на следующие 15 минут. и мы отправляем случайный пароль на указанный адрес электронной почты, который отправляется через 15 минут. На эти 15 минут аккаунт isactive='false'.

Итак, не могли бы вы помочь мне дать код для хранимой процедуры или триггеров, которые запускаются через 15 минут, которые обновляют эту учетную запись: isactive = 'true'.

Пожалуйста, помогите мне.

Заранее спасибо

0
shikhar 23 Мар 2011 в 11:44

1 ответ

Вы бы не использовали триггер для этого. Возможно можно что-то сделать с сервис-брокером (я не уверен).

Самый простой способ сделать это - просто иметь столбец LockedOutUntil smalldatetime, не допускающий значения NULL, в таблице пользователей (по умолчанию это дата в прошлом), и ваш код проверяет, что

isactive='true' or LockedOutUntil<getdate()

Это потребовало бы 4 байта на строку для всех пользователей, и, по-видимому, в любой момент времени очень немногие будут заблокированы, поэтому более эффективным способом было бы создание новой таблицы, содержащей сведения о блокировке. Либо ваш код должен будет проверить эту таблицу, чтобы определить, заблокирован ли пользователь, либо вы можете деактивировать пользователя заранее и настроить задание агента SQL Server, которое будет запускаться каждую минуту для повторной активации пользователей, период блокировки которых истек. Задание также может удалить их из таблицы блокировки, если вы не хотите вести историю этих событий.

0
Martin Smith 23 Мар 2011 в 14:43