首页 > 解决方案 > 查找数据库的可用空间(sql server)

问题描述

我正在尝试匹配以下两个查询的结果以查找数据库的可用空间

 SELECT 
    sum(size/128.0) AS CurrentSizeMB,  
    sum(size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 )AS FreeSpaceMB
    FROM sys.database_files

GO
    sp_spaceused

任何人都可以建议我如何修改第一个查询,使其与计算的可用空间相匹配sp_spaceused

标签: sql-server

解决方案


尝试这个

    BEGIN
        DECLARE @CONST FLOAT -- To convert the pages to MB
        SELECT @CONST = CONVERT(FLOAT,8)/CONVERT(FLOAT,1024)

        SELECT
        DB_NAME() AS [database],
        f.name AS [file],
        f.size * @CONST AS size,
        FILEPROPERTY(f.name,'spaceused') * @CONST AS allocated,
        (f.size - FILEPROPERTY(f.name,'spaceused')) * @CONST AS unallocated
        FROM sys.master_files f
        JOIN sys.databases d ON d.database_id = f.database_id
        WHERE
        d.name = DB_NAME()

   END

推荐阅读