如何在任何模式中查找空表的数量?

aam*_*mir 1 sql-server-2005 sql-server

我想查询如何在我已经尝试过使用 select * from dba_tables where owner='HR' and num-rows is null 的架构 HR 中找到所有空表;但我不知道这是否是正确的逻辑

Sco*_*red 5

当您说“空”表时,我认为这是指零行的表。

使用中的示例职位为起点,

WITH TablesAndRowCounts
AS (
    SELECT SCHEMA_NAME(sc.schema_id) SchemaName
        ,sc.NAME + '.' + ta.NAME TableName
        ,SUM(pa.rows) RowCnt
    FROM sys.tables ta
    INNER JOIN sys.partitions pa ON pa.OBJECT_ID = ta.OBJECT_ID
    INNER JOIN sys.schemas sc ON ta.schema_id = sc.schema_id
    WHERE ta.is_ms_shipped = 0
        AND pa.index_id IN (1,0)
    GROUP BY sc.schema_id
        ,sc.NAME
        ,ta.NAME
    )
SELECT *
FROM TablesAndRowCounts
WHERE rowcnt = 0
and SchemaName = 'HR'
Run Code Online (Sandbox Code Playgroud)