从 sp_spaceused 打印 database_size

2 sql-server-2008 stored-procedures size

使用 SQL Server 2008,我发现可以使用获取数据库大小

exec sp_spaceused
Run Code Online (Sandbox Code Playgroud)

此过程返回两个表:

database_name | database_size | unallocated space


reserved | data | index_size | unused
Run Code Online (Sandbox Code Playgroud)

我想创建一个查询,其中 SQL 调用的唯一输出是为 database_size 返回的值。我不想要任何多余的输出(没有表头、列名等)。

有没有一种简单的方法可以做到这一点?

WT_*_*T_W 5

在不创建数据库对象的情况下完成此操作的另一种方法是使用从 sp_spaceused 存储过程本身获取的以下查询:

declare @dbsize bigint
declare @logsize bigint

select @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))
, @logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))
from dbo.sysfiles

select ltrim(str((convert (dec (15,2),@dbsize) + convert (dec (15,2),@logsize)) 
* 8192 / 1048576,15,2) + ' MB') as Database_Size
Run Code Online (Sandbox Code Playgroud)