Sql数据库批量清理日志
来源:互联网 发布:网络电视价格表 编辑:程序博客网 时间:2024/06/11 09:46
说明:SQL数据库日志经常过大,引起很多问题,网上很多清理日志的方法,但都比较麻烦,并且不能一次性清理所有数据库。如果有几十个数据库要清理,一个个手工来,想必非常麻烦。
以下代码清除 除了指定的'master', 'msdb', 'tempdb', 'model', 'ReportServerTempDB', 'ReportServer' 以外的所有数据库的日志。
自己可以指定哪些数据库不处理。
不说了,直接上代码,懒人自有懒人的办法(在sql2012上测试通过,其它版本数据库自行测试):
USE [master]
------------遍历所有用户数据库 进行日志清理-------------------------------------------------------------------
DECLARE @SQL AS NVARCHAR(4000)
DECLARE @DATABaseName AS NVARCHAR(50)
DECLARE My_Cursor CURSOR --定义游标
FOR
(
SELECT NAME
FROM sys.databases
WHERE NAME NOT IN ('master', 'msdb', 'tempdb', 'model',
'ReportServerTempDB', 'ReportServer')
) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @DATABaseName; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = '
USE ' + @DATABaseName +
'
--查询出数据库对应的日志文件名称
DECLARE @strDBName AS NVARCHAR(500)
DECLARE @strLogName AS NVARCHAR(500)
DECLARE @strSQL AS VARCHAR(1000)
DECLARE @DBLogSise AS INT = 2
SELECT @strLogName = B.name,
@strDBName = A.name
FROM MASTER.sys.databases AS A
INNER JOIN sys.master_files AS B
ON A.database_id = B.database_id
WHERE A.database_id = DB_ID()
SET @strSQL = ''
--设置数据库恢复模式为简单
ALTER DATABASE ['' + @strDBName +
''] SET RECOVERY SIMPLE;
--收缩日志文件
DBCC SHRINKFILE ('' + @strLogName + '' , '' + CONVERT(VARCHAR(20), @DBLogSise)
+ '');
--恢复数据库还原模式为完整
ALTER DATABASE ['' + @strDBName + ''] SET RECOVERY FULL ''
EXEC (@strSQL)
'
EXEC (@SQL)
PRINT '清理' + @DATABaseName + '日志完成'
FETCH NEXT FROM My_Cursor INTO @DATABaseName; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
PRINT '-----------清理日志完成---------------------' + CONVERT(VARCHAR(100), GETDATE(), 126)+ '----------
不说了,直接上代码,懒人自有懒人的办法:
0 0
- Sql数据库批量清理日志
- SQL Server数据库清理日志
- 维护Sql Server数据库之:日志清理
- SQL 2000清理数据库日志大小
- 清理MS SQL 2000数据库日志
- 清理SQL Server 2008数据库日志
- SQL定期自动清理数据库日志文件
- 如何清理sql server数据库日志
- SQL Server 清理数据库日志文件
- SQL Server 2008 清理数据库日志文件
- SQL数据库日志文件过大 清理方法
- MS SQL SERVER 清理数据库日志脚本
- 数据库日志太大?定期用sql 清理数据库日志即可!
- Win日志批量清理器
- sql日志清理
- Sql日志清理
- Sql Server2005 清理日志
- Sql日志清理
- win10 企业版,升级过后gemymotion无法启动
- 1219 -- 扑克牌
- 第一周项目:在CSDN上宣告“主权”
- CSDN第一篇
- 学习vagrant
- Sql数据库批量清理日志
- 1220 -- 青蛙过河
- 第2周项目0 逆序输出
- android启动闪黑问题解决
- Android新项目上传
- 利用ggplot画分组柱状图的方法
- sizeof()用法汇总
- You need tcl 8.5 or newer in order to run the Redis test
- 1.4MFC控件设置