SQL Server 2008 R2 Express 10GB文件大小限制

问题描述:

我已经达到了我的SQL Server 2008 R2 Express数据库上的文件大小限制,我相信它是10Gb。我知道这是因为我在事件日志中看到事件ID 1101。SQL Server 2008 R2 Express 10GB文件大小限制

的数据库,因为在文件组“主要”磁盘空间不足

“ExchangeBackup”我已删除了部分历史数据来解决问题的,但现在它只是无法分配了新的一页临时修复。一个表(PP4_MailBackup)远远大于其他表,因此当我在12个月前创建此数据库时,我将此表转换为文件流表,并将数据存储在文件系统中的文件组之外。这似乎工作正常,直到我收到错误和新的数据不再被添加到我的数据库。

当我做一个关于表大小的报告时,我看到保留(KB)列加起来将近10GB。

保存我的FILESTREAM数据的文件夹为176 GB

数据库.mdf文件确实是10GB。

有没有人有任何想法为什么表PP4_MailBackup仍然使用近7GB?

这里是 “标准报告 - >磁盘使用情况报告” 此数据库:

在此先感谢

大卫

enter image description here

更新

这里一些更多的信息。

此表中有868,520行。

这个cmd返回1,所以我假设Ansipadding打开。我从来没有改变这个从默认。

SELECT SESSIONPROPERTY('ANSI_PADDING') 

的列定义如下

enter image description here

即使每列的每个记录填写完整的记录大小,通过我的粗略计算表将约为4125470000字节。我知道nvarchar列仅使用实际需要的空间。

我仍然缺少很多空间。

+0

该表似乎很清楚地解释了为什么这个表占用'7GB'。作为一个方面说明,LDB文件也可能会计入您的数据库的10GB存储限制。 –

+0

你好,附件解释说,PP4_Mailbackup表是IS使用7GB,但它没有解释为什么。此表是文件流启用。我应该期望176GB文件流表在数据库中仍占用7GB吗?日志文件不是文件组的一部分,所以我怀疑它包含在内。目前为1GB。我经常备份这个数据库,以便调查为什么日志不会被截断。 –

+0

日志文件大部分是可用空间,因此它正在被正确管理。我看不出缩小它的意义。 –

不是一个真正的答案,而是更多的结论。

我已经放弃了这个问题,并且自己决定删除数据以保持10GB的主文件大小限制。我发现nvarchar列为每个字符存储2个字节,以便处理Unicode字符,尽管它们只使用所需的空间并且不用空格填充列。所以这将解释我无法找到的一些空间。

我试图通过添加具有正确类型的数据的新列来将我的char(500)列转换为varchar(500),然后删除旧列。这工作,但表实际上变得更大,因为删除列只是一个元数据更改,并不实际删除数据。要恢复空间,我需要创建一个新表并复制数据,然后删除旧表,当然,我没有足够的空间在主文件中这样做。

我想过把表复制到临时数据库删除原来的表,然后复制它,但临时数据库不支持文件列(至少据我所知),所以我需要在临时数据库表中保存所有170GB 。这听起来像一个可疑的解决方案,我的测试服务器没有足够的空间存储临时数据库的分区。我无法找到SQL 2008 Express上tempdb的文件大小限制上的任何内容,但是在这一点上它变得太难了。