sql server数据库系统信息相关整理总结

背景:项目开发中的系统维护,需要知道数据库的相关信息,诸如有多少表,以及所占磁盘空间等信息

第一个知识点:首先是数据库sysbojects表

select * from sysobjects 查看结果,即可初步得知这张表作用,记录信息

常用xtype类型 

s表示系统表 system table

u表示用户表 user table 

fn表示标量函数 scalar function

it表示Inter table 

sq表示服务队列

 第二个知识点:object_id()获取某张表格的id

常见用法:

select object_id('tablename')

select * from sysobjects where parent_obj=object_id('tablename') 

获取某张表格所有属性

第三个知识点:exec sp_spaceused 'Program'

 

获取某张表格大小等信息,通过一个内置的系统存储过程完成 

第四个知识点:tempdb和dbo

所有关于 临时表,表变量都是放在这个数据库中

因此新建一张临时表之前,需要判断是否存在

 

最终写出一个存储过程,获取数据库所有表相关信息

if exists(select 1 from tempdb.dbo.sysobjects where id=object_id('tempdb.dbo.#tabName') and xtype='u')
drop table #tabName
go
create table #tabName(
tabname varchar(100),
rowsNum varchar(100),
reserved varchar(100),
data varchar(100),
index_size varchar(100),
unused_size varchar(100)
)
 
declare @name varchar(100)
declare cur cursor for
select name from sysobjects where xtype='u' order by name
open cur
fetch next from cur into @name
while @@fetch_status=0
begin
    insert into #tabName
    exec sp_spaceused @name
    --print @name
 
    fetch next from cur into @name
end
close cur
deallocate cur
-- 已经经过优化
select tabname as '表名',rowsNum as '表数据行数',reserved as '保留大小',convert(int,SUBSTRING(data,0,LEN(data)-2)) size, data as '数据大小',index_size as '索引大小',unused_size as '未使用大小'
from #tabName ORDER BY size desc  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章