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'文件组已满