[MSSQL]SQL Server 2008 R2 收缩日志文件

[MSSQL]SQL Server 2008 R2 收缩日志文件

  • 前言
    • 方法一:命令模式
    • 方法二:部分命令模式 + 任务->收缩->文件(单个数据库)

前言

随着数据库的使用,日志文件越来越大,有时候就需要收缩一下没用的日志文件占用的空间。

由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:

--(SQL2005)
BackupLog DNName with no_log
go
dumptransaction DNName with no_log
go
USE DNName
DBCC SHRINKFILE (2)
Go

方法一:命令模式

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

--1步骤执行
USE [master]
GO
ALTER DATABASE DataBaseName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DataBaseName SET RECOVERY SIMPLE --简单模式
GO
--2步骤执行
USE [DataBaseName]
GO
DBCC SHRINKFILE (N'DataBaseName_Log' , 9, TRUNCATEONLY)
GO
--3步骤执行
USE [master]
GO
ALTER DATABASE DataBaseName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DataBaseName SET RECOVERY FULL --还原为完全模式
GO

下边SQL命令也可实现效果,具体和上边的SQL有什么区别,我还不太懂,有知道的可以评论留言,求指教

USE DataBaseName;
GO
-- 通过将数据库恢复模型更改为SIMPLE来截断日志。
ALTER DATABASE DataBaseName
SET RECOVERY SIMPLE;
GO
-- 将截断的日志文件缩小到1 MB。
DBCC SHRINKFILE (DataBaseName_Log, 1);
GO
-- 重置数据库恢复模型。
ALTER DATABASE DataBaseName
SET RECOVERY FULL;
GO

若提示:
在这里插入图片描述
则检查数据库实际的日志文件名称:

sp_helpdb DataBaseName

[MSSQL]SQL Server 2008 R2 收缩日志文件_第1张图片

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

--先执行此SQL,将数据改成简单模式
ALTER DATABASE DataBaseName SET RECOVERY SIMPLE --简单模式
GO

右键要收缩的数据库,任务->收缩->文件->确定(界面直接确定就可以)
[MSSQL]SQL Server 2008 R2 收缩日志文件_第2张图片
[MSSQL]SQL Server 2008 R2 收缩日志文件_第3张图片

操作完成后,数据库的日志只保留了1M。

-- 之后要执行此SQL
ALTER DATABASE DataBaseName SET RECOVERY FULL --还原为完全模式
GO

你可能感兴趣的:(SQL,Server系列)