如何在SQL Server企业版中获取数据库大小

时间:2019-09-09 01:55:11

标签: sql sql-server

此查询出现错误

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 Enterprise版上运行它。我已经尝试在Standard和其他较低版本上运行它,并且可以正常工作。有人可以告诉我这段代码有什么问题,什么应该是正确的。我不拥有此代码,我只是从另一个站点复制了它。

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

非常感谢您

1 个答案:

答案 0 :(得分:0)

使用MF.size * 8代替MF.size * 8.0