首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果驱动器已满,如何收缩MS SQL Server中的数据库?

如果驱动器已满,如何收缩MS SQL Server中的数据库?
EN

Stack Overflow用户
提问于 2013-12-04 20:54:13
回答 2查看 11.4K关注 0票数 4

我遇到了SQL Server的问题,我无法执行任何查询,因为托管数据库的硬盘驱动器已满。我试图使用MS SMS中的" shrink“功能来收缩数据库,但由于磁盘空间已满,这并不起作用。

如何在不使数据库崩溃的情况下截断日志,同时缩小大小?

我还尝试了以下几种方法

代码语言:javascript
复制
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

但是得到了以下错误

代码语言:javascript
复制
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.

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 21:55:38

SQL Server 2012之前版本

代码语言:javascript
复制
BACKUP LOG LogName
  WITH TRUNCATE_ONLY;

SQL Server 2012及更高版本

WITH_TRUNCATEONLY已被删除,因此您应将恢复模式切换为简单模式,然后恢复以执行相同的操作。

代码语言:javascript
复制
ALTER DATABASE DatabaseName
  SET RECOVERY SIMPLE;

之后,不要忘记恢复您的原始恢复模型!

缩小日志

仅仅因为您截断了日志,这并不意味着磁盘上的文件大小发生了变化。

要减小日志的文件大小,需要发出以下命令

代码语言:javascript
复制
DBCC SHRINKFILE (DatabaseLogLogicalName, 1);
票数 3
EN

Stack Overflow用户

发布于 2013-12-04 20:59:02

简短答案:使用TRUNCATE_ONLY备份日志

冗长的答案:备份你的数据库,并先阅读以下内容:

Managing Transaction Logs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20375975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档