SQL Server错误:主文件组已满

时间:2010-06-07 07:01:40

标签: sql sql-server

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

  

无法为其分配新页面   数据库'mydatabase'因为   文件组中的磁盘空间不足   '主'。创造必要的空间   通过删除文件组中的对象,   添加其他文件到   文件组,或设置自动增长   对于文件组中的现有文件。

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

4 个答案:

答案 0 :(得分:6)

如果您正在使用SQL Express,则可能会达到最大数据库大小限制(或更准确地说是文件组大小限制),对于2005年以前的版本,该版本为4GB,对于SQL Express 2008及更高版本为10GB。该大小限制排除了日志文件。

答案 1 :(得分:5)

没有太多要添加的内容 - 它几乎告诉您在错误消息中需要执行的操作。

您在SQL中创建的每个对象(表,SP,索引等)都是在文件组上创建的。默认文件组是PRIMARY。通常会创建跨多个磁盘的多个文件组。例如,您可以使用名为INDEXES的文件组来存储所有索引。或者,如果您有一个非常大的表,则可以将其移动到另一个文件组。

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

使用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