【发布时间】:2017-08-14 01:53:16
【问题描述】:
我的 SQL Server 2008 R2 Express 数据库已达到文件大小限制,我认为该限制为 10Gb。我知道这一点是因为我在事件日志中看到了事件 ID 1101。
由于文件组“PRIMARY”中的磁盘空间不足,无法为数据库“ExchangeBackup”分配新页面
我已经删除了一些历史数据来暂时解决这个问题,但这只是一个临时修复。一个表 (PP4_MailBackup) 比其他表大得多,所以当我 12 个月前创建此数据库时,我将此表转换为 Filestream 表,并且数据存储在文件系统中的 FileGroup 之外。在我收到错误并且不再将新数据添加到我的数据库中之前,这似乎工作成功。
当我对表大小进行报告时,我看到 Reserved(KB) 列加起来将近 10GB。
保存我的 FileStream 数据的文件夹是 176 GB
数据库.mdf文件确实是10GB。
有人知道为什么表PP4_MailBackup 仍在使用近7GB 吗?
这是此数据库的“标准报告 -> 磁盘使用报告”:
提前致谢
大卫
更新
这里有更多信息。
此表中有 868,520 行。
这个 cmd 返回 1 所以我假设 Ansipadding 是打开的。我从未更改过默认设置。
SELECT SESSIONPROPERTY('ANSI_PADDING')
列是这样定义的
即使每列的每条记录都填满了完整的记录大小,根据我的粗略计算,该表也将是大约 4,125,470,000 字节。我了解nvarchar 列仅使用所需的实际空间。
我仍然缺少很多空间。
【问题讨论】:
-
该表似乎清楚地解释了为什么该表占用了
7GB。附带说明一下,LDB 文件也可能计入数据库的 10GB 存储限制。 -
嗨,蒂姆,附件解释了 PP4_Mailbackup 表使用 7GB,但没有解释为什么。此表已启用文件流。我应该期望一个 176GB 的文件流表在数据库中仍然占用 7GB 吗?日志文件不是文件组的一部分,所以我怀疑它是否包含在内。目前是1GB。我定期备份这个数据库,所以我会调查为什么日志没有被截断。
-
日志文件大部分是可用空间,因此得到了正确管理。我认为缩小它没有意义。