我们正在使用SQL Server 2014.我们有一个大小为12 GB的数据库。 我用下面的查询,并且可以看到文件大小为:与实际数据相比,SQL Server数据库太大
SELECT ((size * 8)/1024), *
FROM sys.sysfiles
这显示了.mdf
文件3 GB,.ldf
文件是9 GB。
然后我用下面的查询看到的实际表尺寸:
SELECT
t.NAME AS TableName,
i.name as indexName,
p.[Rows],
SUM(a.total_pages) as TotalPages,
SUM(a.used_pages) as UsedPages,
SUM(a.data_pages) as DataPages,
(SUM(a.total_pages) * 8)/1024 as TotalSpaceMB,
(SUM(a.used_pages) * 8)/1024 as UsedSpaceMB,
(SUM(a.data_pages) * 8)/1024 as DataSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' AND
i.OBJECT_ID > 255 AND
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name, p.[Rows]
ORDER BY
5 desc
这说明总规模仅40 MB。
但是,我们想知道什么是占用3 GB的剩余空间在.mdf
文件。
请帮助我们找出在MDF和LDF文件服用这么大的空间物体的对象。
非常感谢您的时间!
您是否处于完全恢复模式?你有没有对数据库进行任何维护?为什么你排除查询中的某些对象?如果你想要总大小,你不应该排除对象。听起来像事务日志非常大,不被维护。 –
检查实际使用的数据库数量。您可以从数据库的属性窗口或[sp_spaceused](https://docs.microsoft.com/en-us/sql/relational-databases/databases/display-data-and-log-space-information- for-a-database)存储过程。要么你缺少表格,要么你在某个时候加载了大量数据,然后将其删除。日志文件definitelly的大小表明它没有备份很长一段时间 –
嗨Sean Lange,我已经包含了所有对象并再次尝试。它仍然显示相同的尺寸。数据库恢复模式设置为“简单”。 –