2013-08-16 2 views
6

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

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

Это позволит решить проблему пользователь будучи в состоянии оставаться зарегистрированным в системе после их временного закрытия счета

благодаря

+1

вы можете создать процедуру, которая будет удалять столбцы, а затем создать работу, где вы можете ГРАФИК эта процедура exec – GeoVIP

+0

Не хранить пароли в виде простого текста. – SLaks

+0

Вам нужно будет [Создать задание] (http://technet.microsoft.com/en-us/library/ms190268 (v = sql.100) .aspx). –

ответ

1

Создание хранимой процедуры, чтобы сделать это, а затем запланировать на SPROCs работает, как объяснено here.

DELETE FROM myTable 
WHERE timeStamp < DATEADD(Day, DATEDIFF(Day, 0, GetDate())-1, 0) 
+0

эй, у меня есть созданная хранимая процедура, но я пытаюсь понять, как установить расписание в Sql Management studio –

4

вы можете иметь свою программу это сделать, или настроить sql agent job.

+0

Hi Маслоу, можете ли вы объяснить, как настроить задачу агента sql? –

+1

Это именно то, что делает ссылка. – Maslow

3

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

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; 

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

EDIT:

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

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

Из любопытства, почему есть вычисленный столбец, когда вы можете просто поместить это в представление? –

+0

@AshBurlaczenko. , , Вы этого не сделаете. Мои мысли обрабатываются только тогда, когда по дороге вычисленных столбцов, прежде чем думать о том, чтобы иметь представление. –

+0

@AshBurlaczenko Как будет работать вид? –

Смежные вопросы