【问题标题】:How to get database size in SQL Server Enterprise edition如何在 SQL Server 企业版中获取数据库大小
【发布时间】:2019-09-09 01:55:11
【问题描述】:

我收到关于此查询的错误

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 数据类型,但仍然无济于事。

非常感谢

【问题讨论】:

  • 那么正确的语法应该是什么。谢谢
  • 我认为您需要将数值转换为十进制,请参阅this question

标签: sql sql-server


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多