1、查看某個數據庫,直接執行存儲過程sp_spaceused即可
exec sp_spaceused;
2、查看某個表,在存儲過程後面加上表名即可
EXEC sp_spaceused 'T_XXXXX';
3、查看該數據庫中的所有表,可以寫一個存儲過程,然後執行即可
存儲過程如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- 說明:更新查詢數據庫中各表的大小,結果存儲到數據表中
-- =============================================
CREATE PROCEDURE [dbo].[P_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 P_UpdateTableSpaceInfo
SELECT * FROM temp_tableSpaceInfo;