意思就是当前日期减去设计的清理间隔时间大于零,那么执行方法。
那么就在一周的时间内调用delete 方法。不知你是的.net ,winform还是控制台应用程序?前二者方法差不多,控制台的话跟一楼的方法差不多。
一般用触发器来实现,也可以通过设置代理的方法实现:如果在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应用程序系统日志] ->确定。
MySQL 5.1以后版本中有 Event ,这是类似Oracle中的job 可以通过创建Event,然后在里面调用删除过期记录的存储过程即可实现 定时每天备份mysql并定时删除上月记录(脚本) ouwsh | September 3, 2009 10:41 | Linux/Unix相关 | 阅读(1536) | 评论(0) shell脚本:备份的脚本比较简单:
#!/bin/bash
# 定义年 月 日
year=`date +%Y`
month=`date +%m`
day=`date +%d`
# 定义备份的目录
BACKDIR=/bak_1/mysql/$year/$month/$day
# MySQL的root密码
ROOTPASS=123456
# 建立目录
mkdir -p $BACKDIR
# 获取数据库列表
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# 备份
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done
复制代码上面的脚本将数据库按"年/月/日"目录结构备份,将脚本存为back.sh添加到cron里每天凌晨3点执行
crontab -e
00 03 * * * root /root/back.sh
下面的是每月3号删除上个月的备份,存为del_bak.sh,每月3号3点3分执行
03 03 03 * * root /root/del_bak.sh
注意脚本上传后,要chmod一下权限,比如
chmod 755 /root/back.sh
#!/bin/bash
# 定义年 月 日
year=`date +%Y`
month=`date +%m`
#day=`date +%d`
# 取上一个月
month=`expr $month - 1`
# 如果是1月,则上一月为12,并且年也减1
if [ $month -eq 0 ]then
month=12
day=31
year=`expr $year - 1`
fi
# 因为备份时小于10月的月份有前导零,所以这里判断如果小于10月,则加前导零
if [ $month -lt 10 ]then
pre=0
fi
#获取要删除的目录名
BACKDIR=/bak1/mysql/$year/$pre$month
#删除了
rm -rf $BACKDIR
重新启动crond
/etc/rc.d/init.d/crond restart
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)