SQL Server 错误:主文件组已满

Posted

技术标签:

【中文标题】SQL Server 错误:主文件组已满【英文标题】:SQL Server error: Primary file group is full 【发布时间】:2010-06-07 07:01:40 【问题描述】:

我的数据库中有一个非常大的表,我开始收到此错误

无法为 数据库'mydatabase'因为 文件组中的磁盘空间不足 '基本的'。创造必要的空间 通过在文件组中删除对象, 将附加文件添加到 文件组,或设置自动增长 对于文件组中的现有文件。

您如何解决此错误?我不明白那里的建议。

【问题讨论】:

【参考方案1】:

如果您使用的是 SQL Express,您可能会达到最大数据库大小限制(或更准确地说是文件组大小限制),最高 2005 的版本为 4GB,SQL Express 2008 及更高版本为 10GB。该大小限制不包括日志文件。

【讨论】:

确切地说是文件组大小限制。【参考方案2】:

实际上并没有什么可添加的——它几乎可以在错误消息中告诉您需要做什么。

您在 SQL 中创建的每个对象(表、SP、索引等)都是在文件组上创建的。默认文件组是 PRIMARY。创建跨越多个磁盘的多个文件组是很常见的。例如,您可以有一个名为 INDEXES 的文件组来存储所有索引。或者,如果您有一个非常大的表,您可以将其移至不同的文件组。

您可以为文件组分配空间,例如 2GB。如果文件组中的数据达到 2GB 后未启用 Auto Grow,则 SQL Server 无法再创建任何对象。如果文件组所在的磁盘空间不足,也会发生这种情况。

我不确定还要添加什么 - 正如我之前所说,错误消息几乎可以告诉您需要什么。

【讨论】:

【参考方案3】:

如果您使用客户端工具 (MSDE),则文件组中的数据达到 2GB,SQL Server 无法再创建任何对象。

【讨论】:

【参考方案4】:

使用 DBCC shrinkfile 语句来收缩文件...

USE databasename ;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE databasename 
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (databasename_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE databasename 
SET RECOVERY FULL;
GO

【讨论】:

谢谢哈伦德拉。这就是我想知道的,但没有奏效。我们必须订购额外的 MB。还是谢谢!

以上是关于SQL Server 错误:主文件组已满的主要内容,如果未能解决你的问题,请参考以下文章

因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象?

无法为数据库中的对象分配空间,因为'PRIMARY'文件组已满

管家婆系统出现PRIMARY已满怎么办

SQL Sever Database primary data file 文件如何打开

sql server日志已满报错

sql server运行中,是不是能删除主数据库事务日志文件