5

我有一个名为 Johnson 的数据库,其中包含 50 个表。使用这个数据库的团队问我是否可以为他们提供每个表的大小估计

如何使用 SQL Server 显示数据库中所有表的列表以及它们各自的大小(以 GB 或 MB 为单位)?

4

3 回答 3

12

您可以使用 SSMS 来显示最大 1000 个表的大小:

在此处输入图像描述

于 2013-10-17T18:14:36.913 回答
6
SET NOCOUNT ON 

DBCC UPDATEUSAGE(0) 

-- DB size.
EXEC sp_spaceused

-- Table row counts and sizes.
CREATE TABLE #t 
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 

INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' 

SELECT *
FROM   #t

-- # of rows.
SELECT SUM(CAST([rows] AS int)) AS [rows]
FROM   #t

DROP TABLE #t 

当在数据库上下文中运行时给出类似这样的结果.. Northwind 数据库 在此处输入图像描述

于 2013-10-17T18:03:14.133 回答
1

@马里

我试图从远程数据库(来自 Azure)上的 SQL Server Management Studio 运行您的脚本,但它找不到存储过程。

Could not find stored procedure 'sp_MSforeachtable'.

如果有人想在 Azure DB 上运行它,首先运行这个创建 sp_MSforeachtable 存储过程的脚本:

https://gist.github.com/metaskills/893599

于 2016-01-13T15:46:06.277 回答