查询真实的物理数据库文件大小

cro*_*sek 5 sql-server database-size

关于查询数据库文件大小...

1) 大多数(如果不是全部)这些答案并不总是与文件资源管理器中显示的物理文件大小匹配:

/sf/ask/416175231/

接受的答案报告:      从接受的答案

对比

2)这篇文章似乎与文件资源管理器中显示的物理文件大小相符:

    在此处输入图片说明

是否有一个查询可以在不依赖 dm_os_performance_counters 的情况下报告物理大小?第一组查询是否忽略了可用空间?

文件资源管理器报告的实际大小:

    在此处输入图片说明

为什么 Tempdb 显示的数据和日志文件大小都存在差异,如图所示?

Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)

Joh*_*ohn 9

干得好。您可以使用它来按文件和文件组获取文件大小。它包括系统文件大小和它在磁盘上占用多少空间,以及 SQL 文件大小、使用的 SQL 空间以及扩展的 SQL 可用空间。它包括正在评估的文件的完整路径。

SELECT fg.data_space_id AS FGID,
   (f.file_id) AS File_Id,
   -- As provided by OP, size on disk in bytes.
   CAST(f.size AS FLOAT) * 8.00 * 1024 AS Size_On_Disk_Bytes,
   ROUND((CAST(f.size AS FLOAT) * 8.00/1024)/1024,3) AS Actual_File_Size,
   ROUND(CAST((f.size) AS FLOAT)/128,2) AS Reserved_MB,
   ROUND(CAST((FILEPROPERTY(f.name,'SpaceUsed')) AS FLOAT)/128,2) AS Used_MB,
   ROUND((CAST((f.size) AS FLOAT)/128)-(CAST((FILEPROPERTY(f.name,'SpaceUsed'))AS FLOAT)/128),2) AS Free_MB,
   f.name,
   f.physical_name
FROM sys.database_files f 
    LEFT JOIN sys.filegroups fg
    ON f.data_space_id = fg.data_space_id
Run Code Online (Sandbox Code Playgroud)

有关“Size_On_Disk_Bytes”和“Actual_File_Size”之间区别的更多信息,请访问:https ://superuser.com/questions/66825/what-is-the-difference-between-size-and-size-on-disk

谢谢