2013-08-16 21 views
6

Tôi đã thiết lập tài khoản người dùng tạm thời trên cơ sở dữ liệu sql của mình nơi tên người dùng, mật khẩu và ngày thêm người dùng trang web của tôi được lưu trữ. Tôi đã bước đầu sẽ có những hồ sơ này xóa lập trình nhưng bây giờ tôi tự hỏi liệu sql server 2008 có tích hợp chức năng cho phép các bản ghi được tự động xóa sau khi cho phép nói một ngày hay không.Làm thế nào để tự động xóa các bản ghi trong máy chủ sql sau một khoảng thời gian nhất định

Điều này sẽ giải quyết vấn đề của một người sử dụng có thể để duy trì đăng nhập vào hệ thống sau khi tài khoản tạm thời của họ bị đóng

nhờ

+1

bạn có thể tạo thủ tục sẽ được xóa cột, sau đó tạo ra công việc mà bạn có thể shedule thủ tục này exec – GeoVIP

+0

Không lưu trữ mật khẩu ở dạng văn bản thuần túy. – SLaks

+0

Bạn sẽ cần [Tạo công việc] (http://technet.microsoft.com/en-us/library/ms190268 (v = sql.100) .aspx). –

Trả lời

1

Tạo một Stored Procedure để làm điều đó và sau đó sắp xếp các SPROC chạy như được giải thích here.

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

hey, tôi có một thủ tục được lưu trữ được tạo nhưng im cố gắng hiểu cách thiết lập lịch biểu trong Sql Management studio –

4

bạn có thể thực hiện chương trình hoặc thiết lập sql agent job.

+0

Xin chào Maslow, bạn có thể giải thích làm thế nào để thiết lập một nhiệm vụ đại lý sql? –

+1

đó chính xác là những gì liên kết. – Maslow

3

Bạn có thể có thể có được những gì bạn muốn mà không thực sự xóa hồ sơ. Bạn có thể thêm cột được tính vào bảng để nói liệu bản ghi có hợp lệ hay không.

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

Bạn cũng có thể làm điều này cho các lĩnh vực then chốt trong hồ sơ, vì vậy bạn không thể tìm thấy chúng:

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

Sau đó bạn có thể sử dụng một cái nhìn để truy cập vào bảng:

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

Sau đó, khi rảnh rỗi, bạn có thể xóa các hàng nếu cần vì lý do hiệu suất.

EDIT:

Bạn không thực sự cần một cột tính toán, nếu bạn cụm từ quan điểm như:

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

Ngoài sự tò mò, tại sao có cột được tính toán khi bạn chỉ có thể đặt cột đó trong chế độ xem? –

+0

@AshBurlaczenko. . . Bạn không. Suy nghĩ của tôi xử lý chỉ khi xuống con đường của cột tính toán, trước khi suy nghĩ về việc có một cái nhìn. –

+0

@AshBurlaczenko Chế độ xem sẽ hoạt động như thế nào? –

Các vấn đề liên quan