SQL Server 日志收缩

两种方式:

1.通过图形界面进行日志收缩

第一步:右键数据库属性
在这里插入图片描述
第二步:更改数据库恢复模式,将模式改为_Simple_。
在这里插入图片描述

第三步:右键数据库,Tasks_→_Shrink_→_Files
在这里插入图片描述第四步:收缩数据库日志,选择文件类型_Log_,并在_Shrink action_中将文件收缩到给出的_Minimum_值,这里的数据库因为是新建的没有数据,所以提供的_Minimum_值为0MB,可以将红框3中的数字修改为0。
在这里插入图片描述

File type:选择所要收缩的是“数据库文件”还是“日志文件”。
Currebtly allocated space:数据库为该文件分配的大小,就是在磁盘上看到的文件大小。
Available free space:就是“当前分配的空间” 减去“实际使用的空间”。
Shrink action:
① Release unused space:将该文件中未使用的空间释放出来,数据在文件中不移动;
② Reorganize pages before releasing unused space:此选项可以将文件收缩到“指定大小”,并将数据重新组织。其最小值为数据库“实际使用的空间”;
③ Empty file by migrating the data to other files in the same filegroup:该选项很少用。

上述操作也可以使用T-SQL替代:
DBCC ShrinkFile(‘数据库名’, targetsize); /* 收缩数据库文件 */

DBCC ShrinkFile(‘数据库名_log’, targetsize); /* 收缩日志文件 */

Targetsize:单位为兆,必须为整数,DBCC SHRINKFILE 尝试将文件收缩到指定大小。
DBCC SHRINKFILE 不会将文件收缩到小于“实际使用的空间”大小,例如“分配空间”为10M,“实际使用空间”为6M,当制定targetsize为1时,则将该文件收缩到6M,不会将文件收缩到1M。

用本例中的数据库替换后如下:

DBCC ShrinkFile(‘TEST01’, 1); /* 收缩数据库文件 */
DBCC ShrinkFile(‘TEST01_log’, 1); /* 收缩日志文件 */

注意:如若磁盘空间已满,无法进行收缩数据库事务日志文件,可采取先分离出部分暂未使用的数据库,然后将MDF文件及LDF文件进行拷贝到其他空余盘,进行释放磁盘空间,待日志收缩后,再次将分离出的数据库文件进行附加。

分离数据库操作如下:
右击数据库,Task_→_Detach
在这里插入图片描述
点击OK
在这里插入图片描述
此时发现数据库列表中已经没有TEST01,说明数据库分离成功了。
在这里插入图片描述
附加数据库操作如下:
右击_Databases_,单击_Attach_
在这里插入图片描述
点击_Add_,添加数据库文件
在这里插入图片描述选择需要添加的文件后点击OK
在这里插入图片描述
检查添加的文件无误后,点击OK
在这里插入图片描述
此时在数据库列表中可看到刚附件上去的数据库TEST01
在这里插入图片描述
若未显示TEST01,请刷新数据库列表
在这里插入图片描述

2.通过 Transact-Sql 进行日志收缩

执行如下命令:

USE [数据库名]
GO
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
--设为简单模式
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE 
GO
USE [数据库名]
GO
DBCC SHRINKFILE (N'[log文件名]', [ targetsize], TRUNCATEONLY) 
GO
USE [数据库名]
GO
ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT
GO
--还原为完全模式
ALTER DATABASE [数据库名] SET RECOVERY FULL 
GO

[数据库名]替换为具体数据库, [ targetsize]替换为收缩目标值。

替换为本例中的数据库修改如下:

USE TEST01
GO
ALTER DATABASE TEST01 SET RECOVERY SIMPLE WITH NO_WAIT
GO
--设为简单模式
ALTER DATABASE TEST01 SET RECOVERY SIMPLE 
GO
USE TEST01
GO
DBCC SHRINKFILE (N'TEST01_log', 1, TRUNCATEONLY) 
GO
USE TEST01
GO
ALTER DATABASE TEST01 SET RECOVERY FULL WITH NO_WAIT
GO
--还原为完全模式
ALTER DATABASE TEST01 SET RECOVERY FULL 
GO

转载原文链接:SQL Server 日志收缩方法_sqlserver日志收缩-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值