SQL Server中查詢數據庫的大小和數據庫中各表的大小
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
如果只是查詢數據庫的大小的話,直接使用以下語句即可: exec sp_spaceused 為了保證查詢結果的實時性,推薦使用 @updateusage 參數來確保統計數據是最新的: exec sp_spaceused @updateusage = N'TRUE'; 執行完畢后結果是兩個表,第一個表中包含了基本的統計信息,第二個表示更加詳細的數據占用情況。 如果想具體查詢某個表的大小,加上表名即可: exec sp_spaceused 'spt_values' 結果很簡單: 其實吧,能查一張表,就想怎么能把數據庫里的表都查出來。。。 -- ============================================= -- 描 述:更新查詢數據庫中各表的大小,結果存儲到數據表中 -- ============================================= create PROCEDURE [dbo].[sp_updateTableSpaceInfo] AS BEGIN --查詢是否存在結果存儲表 IF NOT EXISTS (select * from sysobjects where id = OBJECT_ID(N'temp_tableSpaceInfo') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN --不存在則創建 create TABLE temp_tableSpaceInfo (name NVARCHAR(128), rows char(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18)) END --清空數據表 delete from temp_tableSpaceInfo --定義臨時變量在遍歷時存儲表名稱 DECLARE @tablename VARCHAR(255) --使用游標讀取數據庫內所有表表名 DECLARE table_list_cursor CURSOR FOR select name from sysobjects where OBJECTPROPERTY(id, N'IsTable') = 1 AND name NOT LIKE N'#%%' ORDER BY name --打開游標 OPEN table_list_cursor --讀取第一條數據 FETCH NEXT from table_list_cursor INTO @tablename --遍歷查詢到的表名 WHILE @@FETCH_STATUS = 0 BEGIN --檢查當前表是否為用戶表 IF EXISTS (select * from sysobjects where id = OBJECT_ID(@tablename) AND OBJECTPROPERTY(id, N''IsUserTable'') = 1) BEGIN --當前表則讀取其信息插入到表格中 execUTE sp_executesql N'insert INTO temp_tableSpaceInfo exec sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename END --讀取下一條數據 FETCH NEXT from table_list_cursor INTO @tablename END --釋放游標 CLOSE table_list_cursor DEALLOCATE table_list_cursor END GO 用的時候呢,執行一下: exec sp_updateTableSpaceInfo select * from temp_tableSpaceInfo 嗯,應該就可以了吧。 如果不想創建存儲過程,也可以直接用下面的SQL語句查詢: select object_name(id) tablename, 8*reserved/1024/1024 reserved, rtrim(8*dpages/1024)+'MB' used, 8*(reserved-dpages)/1024 unused, 8*dpages/1024-rows/1024*minlen/1024 free, rows --,* from sysindexes where indid=1 order by rows desc 該文章在 2024/2/23 10:23:44 編輯過 |
關鍵字查詢
相關文章
正在查詢... |