可以在shell脚本中,指定需要批量删除的数据库,将它们设置为变量,然后写清空表的语句,就可以实现定义在变量中的数据库批量删除。
你可以先写一个脚本进行测试,可以读取到一个数据库就行,然后将多个数据库放到数组中,循环遍历即可。
最后测试没问题的话,就可以将shell脚本添加到crontab定时任务中,就可以实现每2天定时清空数据表。
一般用触发器来实现,也可以通过设置代理的方法实现:如果在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应用程序系统日志] ->确定。
如果是就一次的话就是waitfor
delay
'02:00'
exec
sp_MSForEachTable
就是两分钟后执行存储过程sp_MSForEachTable,这个存储过程是微软为公开的,不过貌似不是很好用。
如果是在特定时间,比如晚上
10:20
BEGIN
WAITFOR
TIME
'22:20'
EXECUTE
sp_MSForEachTable
END
你可以自建一个存储过程,sp_DeleteAllData
CREATE
PROCEDURE
sp_DeleteAllData
AS
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
NOCHECK
CONSTRAINT
ALL'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
DISABLE
TRIGGER
ALL'
EXEC
sp_MSForEachTable
'DELETE
FROM
?'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
CHECK
CONSTRAINT
ALL'
EXEC
sp_MSForEachTable
'ALTER
TABLE
?
ENABLE
TRIGGER
ALL'
EXEC
sp_MSFOREACHTABLE
'SELECT
*
FROM
?'
GO
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)