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?
这里是 “标准报告 - >磁盘使用情况报告” 此数据库:
在此先感谢
大卫
更新
这里一些更多的信息。
此表中有868,520行。
这个cmd返回1,所以我假设Ansipadding打开。我从来没有改变这个从默认。
SELECT SESSIONPROPERTY('ANSI_PADDING')
的列定义如下
即使每列的每个记录填写完整的记录大小,通过我的粗略计算表将约为4125470000字节。我知道nvarchar
列仅使用实际需要的空间。
我仍然缺少很多空间。
不是一个真正的答案,而是更多的结论。
我已经放弃了这个问题,并且自己决定删除数据以保持10GB的主文件大小限制。我发现nvarchar列为每个字符存储2个字节,以便处理Unicode字符,尽管它们只使用所需的空间并且不用空格填充列。所以这将解释我无法找到的一些空间。
我试图通过添加具有正确类型的数据的新列来将我的char(500)列转换为varchar(500),然后删除旧列。这工作,但表实际上变得更大,因为删除列只是一个元数据更改,并不实际删除数据。要恢复空间,我需要创建一个新表并复制数据,然后删除旧表,当然,我没有足够的空间在主文件中这样做。
我想过把表复制到临时数据库删除原来的表,然后复制它,但临时数据库不支持文件列(至少据我所知),所以我需要在临时数据库表中保存所有170GB 。这听起来像一个可疑的解决方案,我的测试服务器没有足够的空间存储临时数据库的分区。我无法找到SQL 2008 Express上tempdb的文件大小限制上的任何内容,但是在这一点上它变得太难了。
该表似乎很清楚地解释了为什么这个表占用'7GB'。作为一个方面说明,LDB文件也可能会计入您的数据库的10GB存储限制。 –
你好,附件解释说,PP4_Mailbackup表是IS使用7GB,但它没有解释为什么。此表是文件流启用。我应该期望176GB文件流表在数据库中仍占用7GB吗?日志文件不是文件组的一部分,所以我怀疑它包含在内。目前为1GB。我经常备份这个数据库,以便调查为什么日志不会被截断。 –
日志文件大部分是可用空间,因此它正在被正确管理。我看不出缩小它的意义。 –