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