SQL Server 2008 收缩清空大日志文件方法总结

作者:袖梨 2022-06-29

由于SQL2008对文件和日志管理进行了优化,所以在SQL2000和2005中可以运行的如下命令,但在SQL2008中不支持no_log清空日志。

1.清空日志

 代码如下 复制代码

DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:

 代码如下 复制代码

BACKUP LOG 库名 WITH NO_LOG

SQL 2008收缩清空日志方法:

1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了。
1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
2.可以用命令直接操作

清空日志

 代码如下 复制代码

-- set the database SIMPLE model.
ALTER DATABASE 数据库库名称 SET RECOVERY SIMPLE; GO
--Shrink the truncated log file to 2M
DBCC SHRINKFILE (日志名称, 2); GO -- Reset the database recovery model. ALTER DATABASE 库名称 SET RECOVERY FULL; GO

在当前数据库下:

select fileid,groupid,name from sysfiles where groupid=0

得到以下结果:
fileid     groupid name
2          0                test123_log

其中fileid为日志文件ID,name为日记名称test123_log


在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

方案一:完全命令模式

 代码如下 复制代码

USE[master]
    GO
    ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTERDATABASE DNName SET RECOVERY SIMPLE   --简单模式
    GO
    USE DNName
    GO
    DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
    GO
    USE[master]
    GO

    ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT

    GO

    ALTERDATABASE DNName SET RECOVERY FULL  --还原为完全模式

    GO

方案二:部分命令模式 + 任务-收缩-文件(单个数据库)

 代码如下 复制代码

ALTERDATABASE DNName SET RECOVERY SIMPLE   --简单模式
GO

右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M

ALTERDATABASE DNName SET RECOVERY FULL  --还原为完全模式

GO
优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内
即可完成。

相关文章

精彩推荐