2013-08-16 14 views
6

Kullanıcı adları, parolaları ve web sitemin kullanıcıları tarafından eklenen tarihlerin saklandığı sql veritabanımda geçici kullanıcı hesapları oluşturdum.Belirli bir süre sonra sql sunucusunda kayıtları otomatik olarak nasıl silebilirim

Başlangıçta bu kayıtların programsal olarak silinmesini bekledim, ancak şimdi sql server 2008'in kayıtların otomatik olarak silinmesine izin veren dahili bir işleve sahip olup olmadığını merak ediyorum. onların geçici hesap SPROCs olarak açıklanabilir çalışıyor planlamak o zaman yap ve bir Saklı yordam oluşturma

sayesinde

+1

, ardından işlemi oluşturmak size shedule nerede: Eğer ifade görünüm olarak eğer Aslında, hesaplanan bir sütun gerekmez

: DÜZENLEME

Bu prosedür exec – GeoVIP

+0

Parolaları düz metin olarak saklamayın. – SLaks

+0

[İş Oluşturma] 'na ihtiyacınız olacak (http://technet.microsoft.com/en-us/library/ms190268 (v = sql.100) .aspx). –

cevap

1

kapatıldıktan sonra

Bu edememek bir kullanıcının sorunu çözmek olacaktır sisteme Bağlı kalmak istediğiniz here. Eğer program olabilir

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

hey olarak yapılması gerekiyor gibi görünüyor, saklı bir yordamım var ama Sql Management Studio –

4

bunu ya da bir sql agent job kurdu.

+0

Hi kadar zamanlamayı nasıl ayarlayacağımı anlamaya çalışıyorum Maslow, bir sql ajan görevinin nasıl kurulacağını açıklayabilir misin? –

+1

, bağlantının tam olarak yaptığı şeydir. – Maslow

3

Aslında kayıtları silmeden istediğini elde etmek mümkün olabilir. Kaydın geçerli olup olmadığını söylemek için tabloya hesaplanmış bir sütun ekleyebilirsiniz.

IsValid as (case when getdate() - CreatedAt > 1 then 0 else 1 end) 
sen onları bulamıyorum böylece de, kayıttaki anahtar alanlar için bunu yapabilirsiniz

:

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

:

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

Daha sonra tabloya erişmek için bir görünümü kullanabilirsiniz Daha sonra, boş zamanlarınızda, performans gerekçeleriyle karşılaşmanız gerekiyorsa, satırları gerçekten kaldırabilirsiniz.

create vw_Logins as 
    select name, . . . 
    from t 
    where getdate() - CreatedAt < 1; 
sütunları silmek olacaktır prosedürü oluşturabilir
+0

Merak etme, bunu sadece bu bakış açısına yerleştirdiğinizde neden hesaplanmış bir sütun var? –

+0

@AshBurlaczenko. . . Yapmıyorsun. Düşüncelerim, yalnızca bir bakış açısına sahip olmayı düşünmeden önce hesaplanmış sütunların yolunda ilerler. –

+0

@AshBurlaczenko Görünüm nasıl çalışır? –

İlgili konular