SQL SERVER-使用DBCC SHRINKFILE收缩截断日志文件

收缩当前数据库的指定数据或日志文件大小。 可以使用它将一个文件中的数据移到同一文件组中的其他文件,这会清空文件,从而允许删除数据库。 可以将文件收缩到小于创建大小,同时将最小文件大小重置为新值。

SQL SERVER 版本低于 2008

USE DatabaseName
GO
DBCC SHRINKFILE(<TransactionLogName>, 1)
BACKUP LOG <DatabaseName> WITH TRUNCATE_ONLY
DBCC SHRINKFILE(<TransactionLogName>, 1)
GO

注意:该操作会破坏日志链,将来无法恢复到指定时间点,执行上述操作后进行完整备份。

SQL SERVER版本高于 2008

以下示例将 AdventureWorks2022 数据库中的日志文件收缩到 1 MB。 若要允许 DBCC SHRINKFILE 命令收缩文件,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件。

USE AdventureWorks2022;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE AdventureWorks2022
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (AdventureWorks2022_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE AdventureWorks2022
SET RECOVERY FULL;
GO

注意:从设置数据库到简单恢复,缩小文件,再设置完全恢复,实际上有部分日志数据是丢失的,无法及时恢复;缩小数据库文件或数据库增加碎片。

适当的进行日志备份,日志文件通常不会特别大。

扩展阅读:
1、SQL SERVE官方文档:事务日志(SQL SERVER)
2、SQL SERVER官方文档:SQL Server事务日志体系结构和管理指南
3、SQL SERVER官方文档:DBCC SHRINKFILE (Transact-SQL)
4、SQL SERVER官方文档:DBCC SQLPERF (Transact-SQL)
5、SQL SERVER官方文档:管理事务日志文件的大小
6、SQL SERVER官方文档:事务日志备份 (SQL Server)

原创文章,作者:somirror,如若转载,请注明出处:https://somirror.com/5315.html

(0)
上一篇 2023-02-15 10:10
下一篇 2023-02-17 11:21

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注