由于磁盘空间不足,无法为数据库分配新页面


13

使用SQL Server导入和导出向导,出现以下错误:

错误0xc0202009:数据流任务1:SSIS错误代码DTS_E_OLEDBERROR。
发生OLE DB错误。错误代码:0x80004005。
由于文件组“ PRIMARY”中的磁盘空间不足,无法为数据库“数据库”分配新页面。通过在文件组中放置对象,将其他文件添加到文件组或为文件组中的现有文件设置自动增长来创建必要的空间。

我正在尝试上传一系列2GB的文件,并且在加载第4个文件时,即使我转到“数据库属性”>“文件”,并将“文件组”的自动增长更改为2500 MB,并且最大容量不受限制,我仍然收到上述错误消息。

最好的解决方法是什么?这些数据最终将占用大约60-80GB。


1
您正在运行哪个版本的SQL Server?存储“数据库”数据文件的驱动器上有多少可用空间?
nabrond

2
错误消息告诉您“最佳解决方法”:通过在文件组中放置对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间。我不确定我们还能告诉您什么。

1
Brandon,SQL SERVER2012。驱动器上760gb的可用空间,用于存储数据库的数据文件。肯,我启用了自动增长功能,自动增长功能增加了2500 MB,并且最大容量不受限制。我应该仍然遇到这个问题吗?是否有可能需要启用多个自动增长?

1
您是否尝试过手动扩展数据库?

1
可能是自动增长仅在元素之间起作用并且一个插入超出了限制吗?我敢打赌-如果20000gb插入在2500gb自动增长上失败....它可能有900mb的可用空间,并且插入失败。
TomTom

Answers:


11

SQL Express数据库将达到10g。我相信这类似于您收到的错误消息。

我一次在客户遇到这个问题,花了我一段时间才弄清楚。

您正在运行什么版本的sql?


1
这个解决方案救了我!我使用的是Express版本,并已升级到Dev。
以色列Rodriguez

7

确定

由于文件组“ PRIMARY”中的磁盘空间不足,无法为数据库“数据库”分配新页面。

并不是

由于文件组“ PRIMARY”中的磁盘空间不足,无法为数据库“ tempdb”分配新页面。

如果实际上是[tempdb]在错误消息中,则需要通过确保该文件[tempdb]位于与其他数据库分开的适当大小的磁盘上来对其进行单独管理。

如果不在[tempdb]错误消息中,我会认为这种“上载”会[tempdb]非常困难。是[tempdb]相同的磁盘/ LUN上'database'?如果是这样,您可能会尝试通过多个文件增长(在多个数据库上)来加剧问题。因此,在执行此“上载”操作时,请确保同时进行监视[tempdb]

如果[tempdb]位于单独的驱动器上,并且您确定有足够的空间,那么我继续将数据文件的大小调整为您期望的最终状态大小:

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

另外,请确保数据库的日志文件与数据文件分开。如果不是这样,那么您将回到竞争激烈的增长事件中。如果它们在单独的磁盘上,那么我还将仔细检查并适当调整它们的大小。

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

直到达到所需的日志文件大小。我们称其为80GB,可将增长设置为特定大小。我使用的是Paul RandalKimberly Tripp推荐的值

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);

6

尝试手动使其生长:

1.在对象资源管理器中,连接到SQL Server数据库引擎的实例,然后展开该实例。

2.展开数据库,右键单击要增加的数据库,然后单击属性。

3.在“数据库属性”中,选择“文件”页面。

4.要增加现有文件的大小,请增加文件的“初始大小(MB)”列中的值。您必须将数据库的大小至少增加1 MB。

5.要通过添加新文件来增加数据库的大小,请单击添加,然后输入新文件的值。有关更多信息,请参见将数据或日志文件添加到数据库。

6.单击确定。

来自:MSDN


4
手动扩展很好,因为它可以告诉您更多详细信息。在我的情况下,我得到:“ CREATE DATABASE或ALTER DATABASE失败,因为最终的累积数据库大小将超出您许可的每个数据库10240 MB的限制。” 这是不言自明的。
user824276 '17

1

您还可以使用以下脚本从数据库释放空间:

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

这些错误会帮助我解决错误:)还要确保计算机上有足够的磁盘空间。

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.