Как автоматически удалять записи на сервере sql через определенное время

Я настроил временные учетные записи пользователей в моей базе данных sql, где хранятся имена пользователей, пароли и даты, добавленные пользователями моих веб-сайтов.

Сначала я собирался удалить эти записи программным способом, но теперь мне интересно, есть ли в SQL Server 2008 встроенная функция, позволяющая автоматически удалять записи после, скажем, одного дня.

Это решит проблему того, что пользователь сможет оставаться в системе после закрытия своей временной учетной записи.

Спасибо

4 ответа

Решение

Вы могли бы создать SQL Job запускать каждый день и выполнять указанную хранимую процедуру.

http://technet.microsoft.com/en-us/library/ms190268.aspx

Вы можете сделать так, чтобы ваша программа это сделала, или настроить работу агента sql.

Возможно, вы сможете получить то, что вы хотите, не удаляя записи. Вы можете добавить вычисляемый столбец в таблицу, чтобы сказать, является ли запись действительной.

 IsValid as (case when getdate() - CreatedAt > 1 then 0 else 1 end)

Вы также можете сделать это для ключевых полей в записи, поэтому вы не можете найти их:

_name varchar(255),
name as (case when getdate() - CreatedAt < 1 then _name end)

Затем вы можете использовать представление для доступа к таблице:

create vw_Logins as
    select name, . . .
    from t
    where isValid = 1;

Затем, на досуге, вы можете удалить строки, если это необходимо по соображениям производительности.

РЕДАКТИРОВАТЬ:

На самом деле вам не нужен вычисляемый столбец, если вы формулируете представление как:

create vw_Logins as
    select name, . . .
    from t
    where getdate() - CreatedAt < 1;

Для этого создайте хранимую процедуру, а затем запланируйте выполнение SPROC, как описано здесь.

DELETE FROM myTable
WHERE timeStamp < DATEADD(Day, DATEDIFF(Day, 0, GetDate())-1, 0)
Другие вопросы по тегам