
如果是就一次的话就是
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
一般来说3—5为一个周期最好。
数据库日志文件是随着时间增长而增长的,如果长时间不清理,文件会变得特别大,因此需要定期清空,但是日志文件是数据库的重要依据,不用日志文件也是不明智的。单库的可以手工清除,库多了、或者临时没有来得及清理,可能硬盘空间就会占满了,影响访问。
因此设置自动清数据库日志文件还是比较实用的。
手动清理方法:做好数据备份,右键单击对应的数据库,选择''属性"---''选项",把故障还原模型设定为简单,确定后关闭;再右键单击该数据库,''所有任务"---'收缩数据库",确认后即可清除日志文件,最后记得重新选择''属性",把故障还原模型设定为完全。
自动清理方法:同样是利用 sql server 代理服务,执行自动作业。
打开企业管理器,进入“管理”-“ sql server 代理服务”-“作业”,在右侧窗口点击右键,选择“新建作业”。“常规”选项卡中,填写作业名称,具体描述,注意所有者最好还是用 sa 或者默认的管理帐号。
转到“步骤”选项卡,新建作业步骤,填写步骤名称,类型为脚本,数据库
为需要清理日志的数据库,在下边命令中填写以下命令:
SqI 代码
1
DUMP TRANSACTION 数
据库名称 WITH NO LOG
DBCC SHRINKFILE (数据库日志文件名,1)
或者使用
2
DUMP TRANSACT1ON DBName WITH NO _L0G
BACKUP LOG DBName WITH NO LOG
DBCC SIIRTNKDATABASE ( DBName )
DBCC SIIRTNKFTLE (1)
上边的数据库名称填写需要维护的数据库名称,数据库日志文件名填写其对应的日志文件名,注意,不是资源管理器里看到的带后缀名的那个名字,而是企业管理器里,数据库属性里日志选项卡中日志的名字(通常也只是差一个后缀名…),确定后添加一个作业步骤。如果需要维护多个数据库,用上述方法重复添加作业步骤,注意每个步骤成功或失败后的动作即可,最后选择一下开始的步骤。
//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
以上就是关于如何定时删除SQL数据库全部的内容,包括:如何定时删除SQL数据库、数据库定期清理数据多久合适、sql server 2005 如何实现对表数据进行定期删除等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)