mar*_*c_s 38
在SQL Server 2005及更高版本上,您可以使用以下内容:
;WITH TableRows AS
(
SELECT
SUM(row_count) AS [RowCount],
OBJECT_NAME(OBJECT_ID) AS TableName
FROM
sys.dm_db_partition_stats
WHERE
index_id = 0 OR index_id = 1
GROUP BY
OBJECT_ID
)
SELECT *
FROM TableRows
WHERE [RowCount] = 0
Run Code Online (Sandbox Code Playgroud)
CTE中的内部选择(公用表表达式)计算每个表的行数,并按table(OBJECT_ID)对它们进行分组,然后CTE的外部SELECT只捕获总行数相等的行(表)为零.
Rik*_*tel 25
要获取空表的列表,我们可以使用下面的tsql -
EXEC sp_MSforeachtable 'IF NOT EXISTS (SELECT 1 FROM ?) PRINT ''?'' '
Run Code Online (Sandbox Code Playgroud)
并且,要获取至少有一行数据的表列表,我们可以使用下面的tsql -
EXEC sp_MSforeachtable 'IF EXISTS (SELECT 1 FROM ?) PRINT ''?'' '
Run Code Online (Sandbox Code Playgroud)
注意:表格列表仅包括"用户表",即不包括"系统表".
小智 6
select a.rows as Rowcnt,
b.name as Tbl_Name
from sys.partitions a
join sys.tables b
on a.object_id=b.object_id
where b.type='u'
and a.rows = 0
Run Code Online (Sandbox Code Playgroud)