如何查询我的SQL服务器以仅获得数据库的大小?
我用了这个:
use "MY_DB"
exec sp_spaceused
我得到了这个:
database_name database_size unallocated space
My_DB 17899.13 MB 5309.39 MB
它返回了几个我不需要的列,也许有从该存储过程中选择DATABASE_SIZE列的诀窍?
我还尝试了这个代码:
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name,
(size * 8) / 1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'MY_DB'
它给了我这样的结果:
DatabaseName Logical_Name Physical_Name SizeMB
MY_DB MY_DB D:MSSQLDataMY_DB.mdf 10613
MY_DB MY_DB_log D:MSSQLDataMY_DB.ldf 7286
所以我写了这样的话:
SELECT SUM(SizeMB)
FROM (
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name,
(size * 8) / 1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'MY_DB'
) AS TEMP
我得到:1183
所以它是有效的,但也许有一种适当的方法来获得它?
12条答案
按热度按时间smdncfj31#
试试这件吧-
查询:
输出:
功能:
更新2016/01/22:
显示有关大小、可用空间、上次数据库备份的信息
输出:
wlwcrazw2#
还将结果与以下查询的结果进行比较
它会产生类似以下结果的结果
有一篇好文章--Different ways to determine free space for SQL Server databases and database files
3gtaxfhh3#
非常适合我在SQL Server 2012中计算SQL数据库大小
lsmd5eda4#
这里已经有很多很好的答案,但值得一提的是,使用标准报告通过SQL Server Management Studio(SSMS)获得SQL Server数据库大小的一种简单快速的方法。
要运行报表,您需要:
1.右击数据库
1.转到报告>标准报告>磁盘使用。
它打印出一份漂亮的报告:
其中保留的总空间是磁盘上数据库的总大小,它包括所有数据文件的大小和所有事务日志文件的大小。
在幕后,SSMS使用dbo.sysfiles视图或sys.database_files视图(取决于MSSQL的版本)和某种类型的查询来获取总空间预留值:
x6h2sr285#
方法1-使用‘sys.database_files’系统视图
方法2-使用‘sp_spaceused’系统存储过程
m2xkgtsf6#
i7uq4tfw7#
EXEC sp_spaceused @oneresultset = 1
在一行中显示所有结果如果只执行‘exec sp_spaceused’,您将看到在SQL Server Management Studio v17.9中有两行工作
5lwkijsr8#
如果您想简单地检查单个数据库的大小,可以使用SSMS gui来完成。
进入服务器资源管理器->展开它->右击数据库->选择属性->在弹出窗口中选择常规选项卡->查看大小
来源:Check database size in Sql server ( Various Ways explained)
xkftehaa9#
您可以在this link之后检查该查询的工作方式。
ddhy6vgd10#
输出
ar7v8xwq11#
试试下面的代码。它的代码非常好:
niwlg2el12#
如果你想获得真实数据的大小,你只需要过滤‘在线’数据文件。否则,您可能会得到一个与您在图形用户界面中看到的大小显著不同的大小。一些Ghost|旧垃圾记录可能在sys.master_files中,例如‘Deunct’数据文件。