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  

 

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