其實只要使用系統(tǒng)內(nèi)置的存儲過程sp_spaceused就可以得到表的相關(guān)信息
如:sp_spaceused 'tablename'
以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關(guān)信息全部都保存在一個指定的表里面
create procedure get_tableinfo as 
 
if not exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[tablespaceinfo]') and objectproperty(id, n'isusertable') = 1) 
create table  tablespaceinfo                         --創(chuàng)建結(jié)果存儲表 
              (nameinfo varchar(50) ,  
               rowsinfo int , reserved varchar(20) ,  
               datainfo varchar(20)  ,  
               index_size varchar(20) ,  
               unused varchar(20) ) 
 
 
delete from tablespaceinfo --清空數(shù)據(jù)表 
 
declare @tablename varchar(255)  --表名稱 
 
declare @cmdsql varchar(500) 
 
declare info_cursor cursor for  
select o.name   
from dbo.sysobjects o where objectproperty(o.id, n'istable') = 1  
     and o.name not like n'#%%'  order by o.name 
 
open info_cursor 
 
fetch next from info_cursor  
into @tablename  
 
while @@fetch_status = 0 
begin 
 
  if exists (select * from dbo.sysobjects where id = object_id(@tablename) and objectproperty(id, n'isusertable') = 1) 
  execute sp_executesql  
         n'insert into tablespaceinfo  exec sp_spaceused @tbname', 
          n'@tbname varchar(255)', 
          @tbname = @tablename 
 
  fetch next from info_cursor  
  into @tablename  
end 
 
close info_cursor 
deallocate info_cursor 
go 
 
 
執(zhí)行存儲過程 
exec get_tableinfo 
查詢運行該存儲過程后得到的結(jié)果 
select * 
from tablespaceinfo  
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved))
新聞熱點
疑難解答
圖片精選