在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
生活随笔
收集整理的這篇文章主要介紹了
在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
在 sql server 中,查詢 數(shù)據(jù)庫的大小 和 數(shù)據(jù)庫中各表的大小
其實本來只想找一個方法能查詢一下 數(shù)據(jù)庫 的大小,沒想到這個方法還能查詢數(shù)據(jù)庫中 各個數(shù)據(jù)表 的大小,嗯,挺好玩的,記錄一下。
MSDN資料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx
如果只是查詢數(shù)據(jù)庫的大小的話,直接使用以下語句即可:
EXEC sp_spaceused為了保證查詢結(jié)果的實時性,推薦使用 @updateusage 參數(shù)來確保統(tǒng)計數(shù)據(jù)是最新的:
EXEC sp_spaceused @updateusage = N'TRUE';執(zhí)行完畢后結(jié)果是兩個表,第一個表中包含了基本的統(tǒng)計信息,第二個表示更加詳細的數(shù)據(jù)占用情況。
如果想具體查詢某個表的大小,加上表名即可:
EXEC sp_spaceused 'spt_values'結(jié)果很簡單:
(完)
?
?
。。。
其實吧,能查一張表,就想怎么能把數(shù)據(jù)庫里的表都查出來。。。
嗯,來一個吧,從網(wǎng)上查到的:
-- ============================================= -- 描 述:更新查詢數(shù)據(jù)庫中各表的大小,結(jié)果存儲到數(shù)據(jù)表中 -- ============================================= CREATE PROCEDURE [dbo].[sp_UpdateTableSpaceInfo] AS BEGIN--查詢是否存在結(jié)果存儲表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--定義臨時變量在遍歷時存儲表名稱DECLARE @tablename VARCHAR(255)--使用游標讀取數(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--打開游標OPEN table_list_cursor--讀取第一條數(shù)據(jù)FETCH NEXT FROM table_list_cursor INTO @tablename --遍歷查詢到的表名WHILE @@FETCH_STATUS = 0BEGIN--檢查當前表是否為用戶表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 = @tablenameEND--讀取下一條數(shù)據(jù)FETCH NEXT FROM table_list_cursor INTO @tablename END--釋放游標CLOSE table_list_cursorDEALLOCATE table_list_cursor ENDGO用的時候呢,執(zhí)行一下:
EXEC sp_UpdateTableSpaceInfo SELECT * FROM temp_tableSpaceInfo嗯,應該就可以了吧。
(這次真的完了)
轉(zhuǎn)載于:https://my.oschina.net/rootliu/blog/2252939
總結(jié)
以上是生活随笔為你收集整理的在 sql server 中,查询 数据库的大小 和 数据库中各表的大小的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Algs4-1.4.8计算输入文件中相等
- 下一篇: 原 荐 简单说说Kafka中的时间轮算法