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

Posted

技术标签:

【中文标题】如何在 SQL Server 企业版中获取数据库大小【英文标题】:How to get database size in SQL Server Enterprise edition 【发布时间】: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 【参考方案1】:

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

【讨论】:

以上是关于如何在 SQL Server 企业版中获取数据库大小的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER 2000数据库日志文件过大如何解决

怎么处理SQL Server数据库占用过多内存

如何选择列名并为 SQL Server 获取数据?

SQL Server 2005/2008/2012中应用分布式分区视图

《思维三:如何设计商业仪表版中的故事线》

SQL Server 2012企业版和标准版的区别