日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【转载】查看MSSQL数据库每个表占用的空间大小的方法

發布時間:2023/12/18 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】查看MSSQL数据库每个表占用的空间大小的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sp_spaceused
顯示行數、保留的磁盤空間以及當前數據庫中的表所使用的磁盤空間,或顯示由整個數據庫保留和使用的磁盤空間。
語法
sp_spaceused [[@objname =] 'objname']
[,[@updateusage =] 'updateusage']
參數
[@objname =] 'objname'
是為其請求空間使用信息(保留和已分配的空間)的表名。objname 的數據類型是 nvarchar(776),默認設置為 NULL。
[@updateusage =] 'updateusage'
表示應在數據庫內(未指定 objname 時)還是在特定的對象上(指定 objname 時)運行 DBCC UPDATEUSAGE。值可以是 true 或 false。updateusage 的數據類型是 varchar(5),默認設置為 FALSE。
返回代碼值
0(成功)或 1(失敗)
示例
A. 有關表的空間信息
下例報告為 titles 表分配(保留)的空間量、數據使用的空間量、索引使用的空間量以及由數據庫對象保留的未用空間量。
USE pubs
EXEC sp_spaceused 'titles'

B. 有關整個數據庫的已更新空間信息
下例概括當前數據庫使用的空間并使用可選參數 @updateusage。
USE pubs
sp_spaceused @updateusage = 'TRUE'
不過此方法,只能查看一個表的大小,一個數據庫中一般會有多個表,如何一次性查看某數據庫的所有表大小呢?

第一種方法(較簡單,看的有些吃力):
exec sp_MSforeachtable "exec sp_spaceused '?'"

第二種方法(較復雜,但看的比較清楚,原作者不詳):
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
????????????????????????????????? ??????? )
????????????????????????????????? ??????? 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
--itlearner注:顯示數據庫信息
sp_spaceused @updateusage = 'TRUE'
--itlearner注:顯示表信息
SELECT
*
FROM
tablespaceinfo
ORDER BY
CAST(LEFT(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) AS INT) desc

第三種方法:
SELECT
object_name(id) tablename,
8*reserved/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
reserved desc

轉載于:https://www.cnblogs.com/wonder315/archive/2011/09/12/2173938.html

總結

以上是生活随笔為你收集整理的【转载】查看MSSQL数据库每个表占用的空间大小的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。