如何查找SQLServer数据库中所有空间的使用位置

时间:2008-12-30 17:53:52

标签: sql-server sql-server-2005

我们有一个SQL服务器数据库,根据Microsoft SQL Server Management Studio,6436Mb中只有119Mb可用。

然而命令: EXEC sp_msforeachtable'sp_spaceused''?''' 显示总保留空间小于2Gb

我们怎样才能找出剩余空间的使用位置?

3 个答案:

答案 0 :(得分:2)

尝试运行我在Db上使用的脚本。这可能会为您提供更多信息。留意索引空间:

CREATE TABLE #temp(
    rec_id      int IDENTITY (1, 1),
    table_name  varchar(128),
    nbr_of_rows int,
    data_space  decimal(15,2),
    index_space decimal(15,2),
    total_size  decimal(15,2),
    percent_of_db   decimal(15,12),
    db_size     decimal(15,2))

    -- Get all tables, names, and sizes
    EXEC sp_msforeachtable @command1="insert into #temp(nbr_of_rows, data_space, index_space) exec sp_mstablespace '?'",
                @command2="update #temp set table_name = '?' where rec_id = (select max(rec_id) from #temp)"

    -- Set the total_size and total database size fields
    UPDATE #temp
    SET total_size = (data_space + index_space), db_size = (SELECT SUM(data_space + index_space) FROM #temp)

    -- Set the percent of the total database size
    UPDATE #temp
    SET percent_of_db = (total_size/db_size) * 100

    -- Get the data
    SELECT *
    FROM #temp
    ORDER BY nbr_of_rows DESC

    --select sum(nbr_of_rows) from #temp 
    --for xml auto

    -- Comment out the following line if you want to do further querying
    DROP TABLE #temp

答案 1 :(得分:1)

如果您使用安装了Reporting Services的SQL Server 2005,则可以尝试运行名为“按表使用磁盘使用情况”的内置报告。您可以在Management Studio中通过右键单击数据库并选择:Reports-> Standard Reports-> Disk Table by Table。来访问它。

此报告将为您提供以下信息: 表名, 记录数量, 保留(KB), 数据(KB), 索引(KB), 未使用(KB)

答案 2 :(得分:0)

检查此脚本是否为getting the free space for each database

SELECT
        DB.name,
        MF.physical_name,
        MF.type_desc AS FileType,
        MF.size * 8 / 1024 AS FileSizeMB,
        fileproperty(MF.name, 'SpaceUsed') * 8/ 1024 AS UsedSpaceMB
FROM
        sys.master_files MF
        JOIN sys.databases DB ON DB.database_id = MF.database_id
ORDER BY
        DB.name,
        FileSizeMB DESC