2013-08-16 13 views
6

Mam skonfigurować tymczasowe konta użytkowników w mojej bazie danych SQL, gdzie przechowywane są nazwy użytkowników, hasła i data dodania moich użytkowników.Jak automatycznie usuwać rekordy w serwerze sql po pewnym czasie

Początkowo zamierzałem mieć te rekordy usunąć programowo, ale teraz zastanawiam się, czy serwer SQL 2008 ma wbudowaną funkcję, która pozwala automatycznie usuwać rekordy, powiedzmy jeden dzień.

To rozwiązać kwestię użytkownik jest w stanie pozostać zalogowanym do systemu po ich tymczasowym zamknięciu konta

dzięki

+1

można procedurę, która będzie usuwać kolumny utworzyć, a następnie utworzyć pracę, gdzie można shedule ta procedura exec – GeoVIP

+0

Nie przechowuj haseł w postaci zwykłego tekstu. – SLaks

+0

Musisz [Utwórz zadanie] (http://technet.microsoft.com/en-us/library/ms190268 (v = sql.100) .aspx). –

Odpowiedz

1

Tworzenie procedury przechowywanej, aby to zrobić, a następnie zaplanować sprocs pracuje jako wyjaśnione here.

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

hej, mam procedura przechowywana, ale próbuję zrozumieć, jak ustawić harmonogram w Sql Management Studio –

4

można mieć swój program to zrobić, lub założyć sql agent job.

+0

Witam Maslow, czy możesz wyjaśnić, jak skonfigurować zadanie agenta sql? –

+1

to dokładnie to, co robi link. – Maslow

3

Możesz być w stanie uzyskać to, co chcesz bez faktycznie usuwanie rekordów. Do tabeli można dodać kolumnę obliczeniową, aby określić, czy rekord jest prawidłowy.

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

Można również zrobić to dla kluczowych pól w rekordzie, więc nie można ich znaleźć:

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

Następnie można użyć widoku dostęp do tabeli:

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

W wolnym czasie możesz usunąć wiersze, jeśli potrzebujesz, ze względu na wydajność.

EDIT:

rzeczywistości nie potrzebują kolumna obliczana, jeżeli fraza widok jak:

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

Z ciekawości, po co kolumna obliczeniowa, kiedy można ją po prostu umieścić w widoku? –

+0

@AshBurlaczenko. . . Ty nie. Moja myśl przetwarza właśnie na drodze obliczonej kolumny, zanim zacznie myśleć o widoku. –

+0

@AshBurlaczenko Jak działałby ten widok? –

Powiązane problemy