如何在一定时间后自动删除sql server中的记录[重复]

Posted

技术标签:

【中文标题】如何在一定时间后自动删除sql server中的记录[重复]【英文标题】:How to automatically delete records in sql server after a certain amount of time [duplicate] 【发布时间】:2013-08-18 23:34:36 【问题描述】:

我在我的 sql 数据库上设置了临时用户帐户,其中存储了我的网站用户的用户名、密码和添加日期。

我最初打算以编程方式删除这些记录,但现在我想知道 sql server 2008 是否有一个内置函数,允许在某一天之后自动删除记录。

这将解决用户在他们的临时帐户关闭后能够保持登录到系统的问题

谢谢

【问题讨论】:

您可以创建将删除列的过程,然后创建可以调度此过程执行的作业 不要以纯文本形式存储密码。 您需要Create a Job。 您可以编写一个 SP 来检查并删除那些超过一天的内容,然后运行一个作业来删除它...我对这两件事都不太了解是为什么我没有回答 不幸的是,因为我使用的是 sql server express,我无法访问 sql server 代理,看起来可能必须以编程方式完成 【参考方案1】:

您可以创建一个SQL Job 来每天运行并执行指定的存储过程。

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

【讨论】:

【参考方案2】:

你可以让你的程序来做,或者设置一个sql agent job。

【讨论】:

嗨,马斯洛,您能解释一下如何设置 sql 代理任务吗? 这正是链接的作用。【参考方案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;

然后,如果出于性能原因需要,您可以在闲暇时实际删除行。

编辑:

如果您将视图表述为:

,您实际上并不需要计算列
create vw_Logins as
    select name, . . .
    from t
    where getdate() - CreatedAt < 1;

【讨论】:

出于好奇,为什么要在视图中放置计算列? @AshBurlaczenko 。 . .你没有。在考虑拥有视图之前,我的思维过程只是在计算列的道路上进行。 @AshBurlaczenko 该视图将如何工作?【参考方案4】:

创建一个存储过程来执行此操作,然后按照here 的说明安排 SPROC 运行。

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

【讨论】:

嘿,我创建了一个存储过程,但我试图了解如何在 Sql Management Studio 中设置计划

以上是关于如何在一定时间后自动删除sql server中的记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何彻底卸载SQL Server

在 SQL Server 中删除全局临时表 (##tempTable)

从C#中的数据中删除特殊字符后如何将dbf文件中的数百万行数据上传到SQL Server

sql server 每加一条数据实现自动加一,但怎么实现删除一条数据后自动减一

如何删除SQL SERVER中的日志文件

SQL SERVER2008数据库,对某个账户赋予datawrite权限后,如何取消删除权限,保留插入和更新权限?