//1你创建一个insert触发器,每当数据插入的时候判断一下是不是有你要删除的数据。
//2你还可以创建一个存储过程,然后再做一个作业任务,让 sql server 每多长时间删除一次。
下面给出的是第一种办法的insert触发器,不过这样每次insert 他都会执行一次,对数据库有点耗资源
create TRIGGER Trigger1
ON dbousers
FOR insert
AS
Begin
declare @mintime datetime,@maxtime datetime
select @mintime =min(时间),@maxtime =max(时间) from Alarm
delete from Alarm where DATEDIFF(d,@mintime ,@maxtime )>=7
End
用C#中的定时方法,设置定时,比如一周清理一次。
意思就是当前日期减去设计的清理间隔时间大于零,那么执行方法。
那么就在一周的时间内调用delete 方法。不知你是的net ,winform还是控制台应用程序?前二者方法差不多,控制台的话跟一楼的方法差不多。
这个根据数据量来的:
若数据不大:
用crontab 写个脚本语言,先获取当前时间 比如php 为$day=inter(date("d",time()));//获取当前日期
if($day=1){//判断是否是月初
do{//数据大分页删除;根据时间取
$return = delData(time<strtotime(“-3 month”));
}while($total >(page-1)每页数量);
}
2定时存储过程
CREATE EVENT `e_call` ON SCHEDULE EVERY 3 MONTH eENDS 'time' ON COMPLETION NOT PRESERVE ENABLE DO call p_chk();
alter table [表名]
drop column [列名]
go
alter table [表名]
add [列名] [列类型] default 0
go
每次采用删除列,然后再新建列的方式,这样可以吗
方式二:
如果可以对现有表结构进行变更,我建议把这个表待清空列,单独挑选出来,放入另外一张表中
一般用触发器来实现,也可以通过设置代理的方法实现:
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,
可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->
描述[填写本次工作详细描述内容];
[ 创建作业分类的步骤:
SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->
数据库[要 *** 作的数据库]->命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的sql文件
如果要执行存储过程,填 exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
] ->确定
(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
更改[调度时间表]->确定
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
以上就是关于sql server 2005 如何实现对表数据进行定期删除全部的内容,包括:sql server 2005 如何实现对表数据进行定期删除、怎么用C#程序定时清理数据库中业务数据、DB2数据库定时自动清理表数据的脚本语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)