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

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

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

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

【问题讨论】:

    标签: sql sql-server


    【解决方案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。还是谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2017-10-16
        • 1970-01-01
        • 2010-10-21
        相关资源
        最近更新 更多