SQL 查找数据库中每个 table 的行数

SQL to find the number of rows per table in a database

我的目标是创建当前数据库中所有 table 的电子表格,该电子表格将显示 table 名称和每个 table 中的行数。一个好处是还能够在 table 中最后输入或更改任何内容时显示。不过我不确定最后一部分是否可行。

这就是我目前所拥有的...没什么大不了的,但我就是想不通如何向其中添加每 table 行计数。

SELECT name, type, type_desc
FROM [scheme].sys.all_objects
WHERE type = 'U'
CREATE TABLE #T
(TABLENAME VARCHAR(100) ,
COUNT INT)
INSERT INTO #T
EXEC SP_MSFOREACHTABLE 'SELECT ''?'' ,COUNT(*) FROM ?'
SELECT * FROM  #T
DROP TABLE #T

您可以对系统目录视图使用此查询:

SELECT 
    t.NAME AS TableName,
    p.rows AS RowCounts
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
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, p.Rows
ORDER BY 
    t.Name

获得想要的结果 - 当前数据库中的所有表,以及每个表中的行数。