1. 程式人生 > >檢視sql server每個表佔用的空間大小

檢視sql server每個表佔用的空間大小

--判斷是否存在結果儲存表[tablespaceinfo]。如果不存在,則建立ifnot exists
(select*from dbo.sysobjects
   where id = object_id(N'[dbo].[tablespaceinfo]')and OBJECTPROPERTY(id, N'IsUserTable')=1)
create table tablespaceinfo
(
   nameinfo varchar(50),
   rowsinfo int, reserved varchar(20),
   datainfo varchar(20),
   index_size varchar
(20), unused varchar(20))deletefrom tablespaceinfo --清空原有資料表 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')=1and o.name not like N'#%%' order by
o.name OPEN Info_cursor FETCH NEXT FROM Info_cursor INTO @tablename WHILE @@FETCH_STATUS=0BEGIN--如果是使用者表if exists (select*from dbo.sysobjects where id = object_id(@tablename)and OBJECTPROPERTY(id, N'IsUserTable')=1)--說明:sp_executesql 執行可以多次重複使用或動態生成的Transact-SQL 語句或批處理-- sp_spaceused 顯示行數、保留的磁碟空間以及當前資料庫中的表、索引檢視
--ServiceBroker佇列所使用的磁碟空間,或顯示由整個資料庫保留和使用的磁碟空間。 execute sp_executesql N'insert into tablespaceinfo exec sp_spaceused @tbname', N'@tbname varchar(255)',@tbname=@tablename FETCH NEXT FROM Info_cursor INTO @tablenameEND CLOSE Info_cursor--閉關遊標 DEALLOCATE Info_cursor--釋放遊標 GO --顯示資料庫資訊 sp_spaceused @updateusage='TRUE'--顯示錶資訊select*from tablespaceinfo order by cast(left(ltrim(rtrim(reserved)), len(ltrim(rtrim(reserved)))-2)asint) desc