我在使用 SQL Server 时遇到问题,无法执行任何查询,因为托管数据库的硬盘已满。我尝试使用 MS SMS 中的“收缩”功能来收缩数据库,但由于磁盘空间已满而不起作用。
如何在不使数据库崩溃的情况下截断日志并缩小大小?
我也尝试了以下方法
USE myDatabaseName;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE myDatabaseName
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (myDatabaseName_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE myDatabaseName
SET RECOVERY FULL;
GO
Run Code Online (Sandbox Code Playgroud)
但出现以下错误
Msg 3023, Level 16, State 3, Line 2
Backup and file manipulation operations (such as ALTER DATABASE ADD FILE) on a database must be serialized. Reissue the statement after the current backup or file manipulation operation is completed.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
Run Code Online (Sandbox Code Playgroud)
谢谢
BACKUP LOG LogName
WITH TRUNCATE_ONLY;
Run Code Online (Sandbox Code Playgroud)
已WITH_TRUNCATEONLY删除,因此您应该将恢复模式切换为“简单”并恢复以执行相同的操作。
ALTER DATABASE DatabaseName
SET RECOVERY SIMPLE;
Run Code Online (Sandbox Code Playgroud)
之后,不要忘记恢复原来的恢复模式!
仅仅因为您截断了日志,并不意味着磁盘上的文件大小已更改。
要减少日志文件大小,您需要发出以下命令
DBCC SHRINKFILE (DatabaseLogLogicalName, 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12909 次 |
| 最近记录: |