如何在SQL Server Enterprise Edition中获取数据库大小



>我收到有关此查询的错误

SELECT
DB.name,
SUM(CASE WHEN type = 0 THEN MF.size * 8 / 1024.0  ELSE 0 END) AS DataFileSizeMB,
SUM(CASE WHEN type = 1 THEN MF.size * 8 / 1024.0 ELSE 0 END) AS LogFileSizeMB,
SUM(mf.size* 8 / 1024.0) AS TotalSizeMB,    
SYSDATETIME() AS Datelogged
FROM
sys.master_files MF
JOIN 
sys.databases DB ON DB.database_id = MF.database_id
WHERE 
DB.source_database_id IS NULL
GROUP BY 
DB.name
ORDER BY 
Datelogged DESC

我收到一个错误:

将表达式转换为数据类型 int 的算术溢出错误

我在SQL Server 2016企业版上运行它。我尝试在标准版和其他较低版本上运行它,它会起作用。有人可以说出这段代码有什么问题,什么应该是正确的。我不拥有此代码,我只是从另一个站点复制了它。

采取的行动:我尝试将其转换为bigint数据类型,但仍然无济于事。

谢谢

而不是MF.size * 8使用MF.size * 8.0

最新更新