日期:2014-05-19  浏览次数:20634 次

如何只保留30天的记录
数据库中每天都有上10万的数据写入,如何只保留最后30天的数据,请高人指点,谢谢.

------解决方案--------------------
delete from [Table] where datediff(day,[field],getdate())> 30
------解决方案--------------------
做一个计划任务,每天执行一条删除30天前的记录的语句
------解决方案--------------------
delete table where RunDate <= dateadd(dd,-30,getdate())
------解决方案--------------------
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
-- "常规 "项中输入作业名称
-- "步骤 "项
--新建
-- "步骤名 "中输入步骤名
-- "类型 "中选择 "Transact-SQL 脚本(TSQL) "
-- "数据库 "选择执行命令的数据库
-- "命令 "中输入要执行的语句:
delete 表 where datediff(dd,日期,getdate())> 30

--确定
-- "调度 "项
--新建调度
-- "名称 "中输入调度名称
-- "调度类型 "中选择你的作业执行安排
--如果选择 "反复出现 "
--点 "更改 "来设置你的时间安排为每天一次


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择 "自动启动 "--确定.
------解决方案--------------------
delete 表
where 日期 <
select top 1 * from (
select top 30 日期 from 表
group by convert(varchar(10),日期,120) order by convert(varchar(10),日期,120) desc)a
order by 日期
------解决方案--------------------
delete 表
where 日期 <
(select top 1 日期 from (
select top 30 日期 from 表
group by convert(varchar(10),日期,120) order by convert(varchar(10),日期,120) desc)a
order by 日期)

如果你要脚本的话。。这条是删除 <后30中最前一天的所有数据

------解决方案--------------------
delete from [Table] where datediff(day,[field],getdate())> 30
------解决方案--------------------
delete from [Table] where datediff(day,[field],getdate())> 30
-------------------------------------------------
这句就别跟着说了~~
------解决方案--------------------
安全第一
------解决方案--------------------
对,做个计划,删除就OK了
------解决方案--------------------
创建作业
delete table_Pqs where 时间字段 <= dateadd(d,-30,getdate())
调度每天执行一次
------解决方案--------------------
创建作业,delete from [Table] where datediff(day,[field],getdate())> 30
每天一次
------解决方案--------------------
建议建一个数据库维护计划是比较好,天天备份,并且删除前一个月的数据库备份.保留到今天为止,向后推的30天/偶就是这样的.
------解决方案--------------------
做个触发器应该可以
------解决方案--------------------
前面几位应该问题就可以,作业时间应定在访问量少的时候,如深夜,触发器不可取
------解决方案--------------------
创建个job比较好,直接搞个sql删了就是啦。