主文件组已满SQL Server 2008


15

我有一个大表(约5000万行),我正在尝试将其批量插入SQL Server,但出现错误:

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

数据库中还有另一个表,其中包含约2500万行。该数据库将仅在单台计算机上使用,并且将被设计用于挖掘已经存在的数据,并且在任何情况下都不会超过其当前大小。

对于这种情况,SQL Server不会抱怨的最佳解决方法是什么?解决方案是否关系到该数据库不会暴露给多个用户是否重要?


2
您需要向数据库添加更多空间或删除未使用的对象。你的问题是什么?
Gordon Linoff 2013年

@GordonLinoff创建数据库时,文件组被设计为不受限制地增长,但是我遇到了这个问题。我希望找到一种方法来防止这种情况再次发生。
wootscootinboogie

1
您是否有更多的物理磁盘空间可用?如果是这样,请检查SQL Server错误日志,并查看是否存在有关自动增长失败原因的其他信息。
凯文(Kevin)

您能否确认有足够的磁盘空间可用?这是唯一可能的原因,但文件增长受到限制(您说不是这种情况)。
usr

1
也许您达到了SQL Express版本的数据库大小限制。
布鲁诺·马丁内斯

Answers:


17

按着这些次序:

  1. 确定要添加到数据库存储分配中的空间:
    1. 打开Windows资源管理器
    2. 右键单击数据库文件所在的磁盘驱动器
    3. 选择属性
    4. 检查有多少可用磁盘空间,并确定要为数据库分配多少磁盘空间
      建议: 如果将数据库文件与OS放在同一磁盘上,则至少要留出20%的磁盘空间可用。{ 子建议:Don “不要这样做!将数据重建/迁移到它自己的磁盘上;您将自己搞砸在I / O上。}并至少保留8%的纯数据磁盘;这些数字是我认为实际百分比建议的估计值是。
  2. 更新数据库的存储分配。
    1. 打开SSMS
    2. 点击“查看”标签
    3. 选择“对象资源管理器”
    4. 展开“数据库”文件夹
    5. 右键单击您要批量插入的数据库
    6. 选择“属性”
    7. 单击属性窗口左侧“选择页面”区域中的“文件”列表选项
    8. 找到“数据库文件”行,其中“文件组”为“主要”
    9. 将要添加到数据库分配中的任意兆字节数添加到“初始大小(MB)”数
    10. 点击“确定”
      您在这里时,您可能还需要考虑“自动增长”值。

您希望为数据库分配尽可能多的存储分配。如果空间用完了,您将在没有自动增长的情况下收到此错误;如果启用了自动增长,则每次必须自动增长时,都会对性能造成负面影响。如果您只是磁盘空间不足,那就是您的答案,并且您需要更大的磁盘。


1
我们不是都想要更大的DIK吗?:P
2016年

12

Express Edition 2014每个数据库的限制为10 GB。如果数据库的自动增长达到该点,则SQL Server会抛出(模糊不清?)错误消息,而不提及许可证限制。可能有足够的磁盘空间,但是您仍然看到此消息。

如果设计允许,请采取以下措施:在此许可下使用多个数据库。


1

数据库处于完全恢复模式时,通常空间不足。如果您不执行事务并且手动备份已足够,则可以将恢复模式更改为简单。

您可能还需要从日志文件中恢复空间。。。可以将其清空,但仍要占用空间。

但是,最好向可能提供更多解决方案的DBA询问此问题。


这不是日志增长失败的问题。数据增长失败。
usr

@usr。。。它们可能占用相同的基础磁盘空间。问题是磁盘空间不足。
Gordon Linoff 2013年

他说磁盘空间可用。我明确询问是因为我也可疑。
usr

多少磁盘空间可用/空闲?主文件组中所有文件的当前大小是多少,增长设置是什么?增长增量可能大于可用的可用空间。
user9164

1

以我的经验,当主文件(.mdf)没有空间来保存数据库的元数据时,会出现此消息。该文件包括系统表,它们仅将数据保存到其中。

在文件中留出一些空间,命令将再次起作用。就这样,享受


0

要解决主文件组已满的错误,请转至数据库属性->文件->数据库文件->文件组“ PRIMARY”->自动增长/最大大小,并将Filegroup Database_Name以MB为单位更改为1,最大文件大小检查Unlimited,然后确定。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.