首页 > 解决方案 > PRIMARY 文件组已满

问题描述

由于我的 SQL 服务器上没有剩余空间,我不断收到以下错误,我必须删除数据才能让系统再次运行。

托管公司说我们没有无限的套餐选择。他们建议我们切换到服务器。除此之外,我在互联网上看到了“缩小”,但这会损坏数据库还是对我来说是最终的解决方案?

无法为数据库中的对象分配空间,因为“PRIMARY”文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。

标签: sql-server

解决方案


正如评论中提到的,收缩数据库不会帮助你,因为 SQL Server 会在尝试增长文件之前使用文件中的所有可用空间。

所以你的选择如下:

存档或删除旧数据

如果您有审计表、不再需要访问的大型 blob 或其他不再需要在应用程序中访问的数据,您可以将其从数据库中选择出来,将其存储在某个文件中作为存档(或在需要时从较旧的备份中检索它)。

应用表压缩

如果您正在运行 Enterprise SQL 或 2016 SP1 之后的 Standard/Express/Web 版本,则可以将压缩应用于更大的表。这会将 CHAR 列转换为物理存储为 VARCHAR 列等,我已经看到它在某些 SQL 数据库上获得了 1/3 的空间。但是,您会遇到最初需要空间来执行压缩的问题,因此您可能需要将其与 #1 一起应用。如果您的 tempdb 已满,重新启动数据库服务也可能会为您从 tempdb 中返回一些空间来操作。

升级存储空间

如果您的主机无法满足您的存储空间需求并且#1 和#2 都不可能,那么可能是时候考虑更换主机了。无论如何,这可能是一个好主意,因为您的数据库毫无疑问最终会增长到大于当前大小。


推荐阅读