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