1、SQL2000数据库:
执行这个脚本不能单纯的使用SQLScript.sql的方式,请先备份数据库后,打开SQL查询分析器(MSSQL2000)或者
VS management(MSSQL2003以上版本)的新建查询,填写日志过大的数据库名(例如:mis),执行SQL语句即可;
--1.清空日志
DECLARE @DBName VARCHAR(64)
SET @DBName=‘mis‘
DUMP TRANSACTION @DBName WITH NO_LOG
--2.截断事务日志
BACKUP LOG @DBName WITH NO_LOG
--3.收缩数据库
DBCC SHRINKDATABASE(@DBName)
GO
SQL2005以上版本:
脚本如下:
*****************************************************************************
USE [master]
GO
ALTER DATABASE Mis_GXZL SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE Mis_GXZL SET RECOVERY SIMPLE --简单模式
GO
USE Mis_GXZL
GO
DBCC SHRINKFILE (N‘Mis_Log‘ , 20, TRUNCATEONLY)
GO
--这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
USE Mis_GXZL
GO
SELECT file_id, name FROM sys.database_files;
GO
USE [master]
GO
ALTER DATABASE Mis_GXZL SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE Mis_GXZL SET RECOVERY FULL --还原为完全模式
GO
********************************************************************************
注意:
1、请拷贝两行“*”中间的内容;
2、需要替换两个参数:
Mis_GXZL :需要收缩的SQL2008的数据库名;
DBCC SHRINKFILE (N‘Mis_Log‘ , 11, TRUNCATEONLY)中的 Mis_Log,这个参数需要根据
USE Mis_GXZL
GO
SELECT file_id, name FROM sys.database_files;
GO
来查询出来该数据库对应的日志文件的物理文件名;
2、日志手动清理后,在SQL Management studio下数据库名右击属性,在数据库属性下选中选项,在选项下自动下的自动收缩的false改成true即可;
3、在设置数据库维护计划时,选择维护计划任务为备份和收缩数据库;