代码之家  ›  专栏  ›  技术社区  ›  Ries

使用sql查询确定可用磁盘大小

  •  4
  • Ries  · 技术社区  · 16 年前

    我需要确定数据库所在驱动器上的可用空间。 我知道那件事 xp_fixeddrives

    3 回复  |  直到 14 年前
        1
  •  6
  •   Alex Aza    14 年前

    像这样的?

    declare @DatabaseName sysname 
    set @DatabaseName = 'master'
    
    declare @Drive table(DriveName char, FreeSpaceInMegabytes int)
    insert @Drive execute xp_fixeddrives
    
    select 
        mas.type_desc FileType, 
        mas.name FileName, 
        mas.physical_name PhysicalFileName, 
        mas.size * 8 / 1024 FileSizeInMegabytes,
        drv.DriveName, 
        drv.FreeSpaceInMegabytes
    from sys.master_files mas
        left join @Drive drv on
            left(mas.physical_name, 1) = drv.DriveName
    where database_id = db_id(@DatabaseName)
    

    设置 @DatabaseName 相应地。

        2
  •  2
  •   babs2u2    8 年前
        SELECT Drive
        ,   TotalSpaceGB
        ,   FreeSpaceGB
        ,   PctFree
        ,   PctFreeExact
        FROM
        (SELECT DISTINCT
            SUBSTRING(dovs.volume_mount_point, 1, 10) AS Drive
        ,   CONVERT(INT, dovs.total_bytes / 1024.0 / 1024.0 / 1024.0) AS TotalSpaceGB
        ,   CONVERT(INT, dovs.available_bytes / 1048576.0) / 1024 AS FreeSpaceGB
        ,   CAST(ROUND(( CONVERT(FLOAT, dovs.available_bytes / 1048576.0) / CONVERT(FLOAT, dovs.total_bytes / 1024.0 /
                             1024.0) * 100 ), 2) AS NVARCHAR(50)) + '%' AS PctFree
        ,   CONVERT(FLOAT, dovs.available_bytes / 1048576.0) / CONVERT(FLOAT, dovs.total_bytes / 1024.0 / 1024.0) * 100 AS PctFreeExact                
        FROM    sys.master_files AS mf
        CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.file_id) AS dovs) AS DE
    
        3
  •  1
  •   Frank Kalis    16 年前