解决数据磁盘空间不足的问题

新建日期: 2006 年 4 月 14 日

在恢复过程中,SQL Server 数据库引擎可能需要更多的磁盘空间保存数据文件。如果操作过程中没有足够的磁盘空间,则数据库引擎会发出 1101 或 1105 错误(分别取决于它无法为区分配空间或为对象分配空间)。如果数据库联机时磁盘已满,则数据库保持联机状态,但是不能插入数据。如果恢复过程中磁盘已满,则数据库引擎将数据库标记为“资源挂起”。不管哪种情况,都需要用户执行操作才能使磁盘空间可用。

解决空间问题

下列操作之一可能会将空间用于文件组:

  • 释放已满磁盘上的磁盘空间。
  • 将数据文件移到另一个磁盘。
  • 在其他磁盘上添加文件。
  • 启用自动增长。
ms366198.note(zh-cn,SQL.90).gif注意:
如果数据库恢复过程中出现错误,则必须在解决问题后恢复数据库。

释放已满磁盘上的磁盘空间

  • 在错误消息中提及的文件组内包含文件的磁盘上,通过删除所有不需要的索引或表来释放磁盘空间。释放磁盘空间允许文件组中的文件增长。

将数据文件移到另一个磁盘

在其他磁盘上添加文件 (Transact-SQL)

  • 使用 ALTER DATABASE <database_name> ADD FILE TO FILEGROUP <filegroup_name>,将更多的文件添加到其他磁盘上的文件组。
ms366198.note(zh-cn,SQL.90).gif注意:
有关详细信息,请参阅添加和删除数据文件和事务日志文件

在其他磁盘上添加文件 (SQL Server Management Studio)

增加文件大小

如果禁用自动增长,数据库处于联机状态,并且磁盘上有足够的可用空间,则可采用以下方法之一:

  • 手动增加文件大小以生成单个增量。
  • 使用 ALTER DATABASE 语句启用自动增长以针对 FILEGROWTH 选项设置非零增量。
ms366198.note(zh-cn,SQL.90).gif注意:
不管哪种情况,如果已达到当前大小限制,则应增加 MAXSIZE 值。

恢复数据库

如果数据库在恢复过程中用完了磁盘空间,则可使用 ALTER DATABASE <database_name> SET ONLINE 恢复数据库。

请参阅

概念

解决事务日志已满的问题(错误 9002)

其他资源

ALTER DATABASE (Transact-SQL)
管理事务日志

帮助和信息

获取 SQL Server 2005 帮助