【问题标题】:Find table sizes for all database tables [duplicate]查找所有数据库表的表大小[重复]
【发布时间】:2017-06-09 11:19:38
【问题描述】:

我已经寻找了几天来找到一种方法来查找当前 SQL 实例中每个数据库的表大小。目前我能够使用 sp_spaceused 毫无问题地获取当前数据库的表大小,有没有办法使用 sp_MSforeachdb 来获取大小信息?

我可以列出所有表格,但不确定如何添加表格大小。

Declare @temp_table table
(
    DB_NAME varchar(max),
    TABLE_OWNER varchar(max),
    TABLE_NAME varchar(max),
    TABLE_TYPE varchar(max),
    REMARKS varchar(max)
)

INSERT INTO @temp_table (DB_NAME, TABLE_OWNER, TABLE_NAME, TABLE_TYPE,REMARKS)
EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_tables'

SELECT DB_NAME, TABLE_OWNER, TABLE_NAME, TABLE_TYPE
FROM @temp_table 
WHERE DB_NAME not in ('master','model','msdb','tempdb') and [TABLE_TYPE] = 'TABLE'
order by 1,2,3

欢迎任何建议。

提前谢谢..

【问题讨论】:

    标签: sql-server database


    【解决方案1】:

    如果表大小是您的问题,您可以计算如下:

    Declare @temp_table table
    (
        DBNAME varchar(max),
        TABLE_Name varchar(max),
          table_schema varchar(max),
          row_count int,
        TABLE_Size_in_kb numeric(10,2) 
    )
    
    INSERT INTO @temp_table 
    EXECUTE master.sys.sp_MSforeachdb 'USE [?]; SELECT 
        ''?'',
        t.NAME AS TableName,
        s.Name AS SchemaName,
        p.rows AS RowCounts,
        SUM(a.total_pages) * 8 AS TotalSpaceKB 
        from
          sys.tables t
    INNER JOIN      
        sys.indexes i ON t.OBJECT_ID = i.object_id
    INNER JOIN 
        sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
    INNER JOIN 
        sys.allocation_units a ON p.partition_id = a.container_id
    LEFT OUTER JOIN 
        sys.schemas s ON t.schema_id = s.schema_id
    WHERE 
        t.NAME NOT LIKE ''dt%'' 
        AND t.is_ms_shipped = 0
        AND i.OBJECT_ID > 255 
    GROUP BY 
        t.Name, s.Name, p.Rows'
    
    SELECT *
    FROM @temp_table 
    WHERE DBNAME not in ('master','model','msdb','tempdb') 
    order by 1,2,3 
    

    【讨论】:

    • 谢谢你,这对我很有帮助。
    • @KarlMoore 如果这解决了您的要求,请将其标记为答案。 :)
    • 非常有用的@Ranjana。大票!!谢谢! :)
    猜你喜欢
    • 2013-04-12
    • 2011-12-15
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2017-01-22
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多