如何收缩数据库日志文件

上网查了一下,很多人都遇到过这样的情况:数据库的数据文件才2G左右,但是日志文件就已经20G,如何收缩数据库日志文件呢?

大致的方法有以下几种:

1.DUMP TRANSACTION database_name WITH NO_LOG 清空事务日志

2.BACKUP LOG WITH NO_LOG 截断事务日志

3.BACKUP LOG WITH TRUNCATE_ONLY 截断事务日志

4.DBCC SHRINKDATABASE() 收缩指定数据库中的数据文件和日志文件的大小

5.DBCC SHRINKFILE() 收缩当前数据库的指定数据或日志文件的大小

6.删除日志文件

其中前3中方法是SQL Server 2008 中不再可用的数据库引擎功能,使用了第四种方法感觉效果不明显.下面我们介绍一下如何使用后两种方法收缩数据库日志文件.

1.使用DBCC SHRINKFILE() 收缩当前数据库的指定数据或日志文件的大小,AdventureWorks数据库为例

USE AdventureWorks;

GO

-- 设置AdventureWorks数据库的恢复模式为简单

ALTER DATABASE AdventureWorks

SET RECOVERY SIMPLE;

GO

-- 收缩数据库日志文件到1M

DBCC SHRINKFILE (AdventureWorks_Log, 1);

GO

-- 设置AdventureWorks数据库的恢复模式为完全

ALTER DATABASE AdventureWorks

SET RECOVERY FULL;

GO

 

2.删除日志文件,AdventureWorks数据库为例

USE master

GO

-- 分离AdventureWorks数据库

EXEC sp_detach_db 'AdventureWorks'

GO

-- 删除日志文件

EXEC master..xp_cmdshell 'del "C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/AdventureWorks_Log.ldf"'

GO

-- 如果cmdshell功能不可使用则使用下面语句激活cmdshell功能

USE master

GO

sp_configure 'show advanced options', 1

GO

RECONFIGURE WITH OVERRIDE

GO

sp_configure 'xp_cmdshell', 1

RECONFIGURE WITH OVERRIDE

GO

 

-- 使用sp_attach_single_file_db附加.mdf文件

USE master

GO

EXEC sp_attach_single_file_db 'AdventureWorks', 'C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/AdventureWorks_Data.mdf'

GO

或者

-- 使用"CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG"附加数据库(推荐使用)

CREATE DATABASE AdventureWorks ON

(FILENAME = 'C:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/AdventureWorks_Data.mdf')

FOR ATTACH_REBUILD_LOG

GO

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值