gpt4 book ai didi

database - 结果形式 sp_spaceused 在一个记录集中

转载 作者:搜寻专家 更新时间:2023-10-30 23:20:49 25 4
gpt4 key购买 nike

我想收集所有包含数据库大小和未分配大小的数据库统计信息。我正在尝试使用 sp_spaceused 存储过程,但遗憾的是我无法将结果(此过程为每个数据库获取两个结果集)写入临时表。

我的想法是修改这个程序的代码并另存为新的。我应该改变什么?

连接两个 select 语句就足够了吗?

最佳答案

我刚刚从 2008R2 sp_spaceused 创建了一个简单的版本。它作为查询运行,并返回与 sp_spaceused 相同的数据(不带参数),但在一个结果集中。我还添加了 dbsize 和 logsize 字段,因为为什么不呢。

    select 
-- from first result set of 'exec sp_spacedused'
db_name() as [database_name]
,ltrim(str((convert (dec (15,2),sf.dbsize) + convert (dec (15,2),sf.logsize)) * 8192 / 1048576,15,2) + ' MB') as [database_size]
,ltrim(str((case when sf.dbsize >= pages.reservedpages then
(convert (dec (15,2),sf.dbsize) - convert (dec (15,2),pages.reservedpages))
* 8192 / 1048576 else 0 end),15,2) + ' MB') as [unallocated space]

-- from second result set of 'exec sp_spacedused'
,ltrim(str(pages.reservedpages * 8192 / 1024.,15,0) + ' KB') as [reserved]
,ltrim(str(pages.pages * 8192 / 1024.,15,0) + ' KB') as data
,ltrim(str((pages.usedpages - pages.pages) * 8192 / 1024.,15,0) + ' KB') as index_size
,ltrim(str((pages.reservedpages - pages.usedpages) * 8192 / 1024.,15,0) + ' KB') as unused

-- additional:
,ltrim(str((convert (dec (15,2),sf.dbsize)) * 8192 / 1048576,15,2) + ' MB') as dbsize
,ltrim(str((convert (dec (15,2),sf.logsize)) * 8192 / 1048576,15,2) + ' MB') as logsize
FROM (
select
sum(convert(bigint,case when status & 64 = 0 then size else 0 end)) as dbsize,
sum(convert(bigint,case when status & 64 <> 0 then size else 0 end)) as logsize
from dbo.sysfiles
) sf,
(
select
sum(a.total_pages) as reservedpages,
sum(a.used_pages) as usedpages,
sum(
CASE
-- XML-Index and FT-Index internal tables are not considered "data", but is part of "index_size"
When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0
When a.type <> 1 Then a.used_pages
When p.index_id < 2 Then a.data_pages
Else 0
END
) as pages
from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
left join sys.internal_tables it on p.object_id = it.object_id
) pages

sp_spaceused 的结果:

sp_spaceused results

上述查询的结果:

enter image description here

关于database - 结果形式 sp_spaceused 在一个记录集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com