查詢某個資料庫各個表佔用的空間大小
阿新 • • 發佈:2018-12-15
選中相應資料庫,右鍵點選新建查詢,輸入一下程式碼
--判斷是否存在結果儲存表[tablespaceinfo]。如果不存在,則建立 if not 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) ) delete from 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') = 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 ) --說明:sp_executesql 執行可以多次重複使用或動態生成的Transact-SQL 語句或批處理 -- sp_spaceused 顯示行數、保留的磁碟空間以及當前資料庫中的表、索引檢視 -- 或Service Broker 佇列所使用的磁碟空間,或顯示由整個資料庫保留和使用的磁碟空間。 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 --顯示資料庫資訊 sp_spaceused @updateusage = 'TRUE' --顯示錶資訊 select * from tablespaceinfo order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
然後點選執行即可