Sql server SQL Server Management Studio-查找所有非空表
SQL Server Management Studio Express是否有办法列出所有非空表?我有100多个表格要查看和检查数据。试试:Sql server SQL Server Management Studio-查找所有非空表,sql-server,tsql,ssms,Sql Server,Tsql,Ssms,SQL Server Management Studio Express是否有办法列出所有非空表?我有100多个表格要查看和检查数据。试试: 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
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
您可以尝试使用
sysindex
和INFORMATION\u SCHEMA.TABLES
:)
还可以使用“对象浏览器详细信息(F7)”,导航到感兴趣的数据库的“表”文件夹,并将对象浏览器详细信息设置为显示行数(右键单击标题)使用不推荐使用的视图;并根据表名进行连接,表名不保证唯一;甚至在数据库中
未限定到当前数据库的范围;但可通过使用以下工具进行改进:
假设表可以有两种类型
sys.partitions
中的这些行包含有关相应表分区中的行数的信息
由于SQL Server中的所有表都包含最后一个分区,因此我们可以从sys.partitions
中获取关于表中行数的信息
SELECT
OBJECT_NAME(T.OBJECT_ID) AS TABLE_NAME,
SUM(P.ROWS) AS TOTAL_ROWS
FROM
SYS.TABLES T
INNER JOIN
SYS.PARTITIONS P
ON T.OBJECT_ID = P.OBJECT_ID
WHERE
P.INDEX_ID IN (0,1)
GROUP BY
T.OBJECT_ID
HAVING
SUM(P.ROWS) > 0
SELECT
sch.name as SchemaName,
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.partitions p ON t.object_id = p.OBJECT_ID
INNER JOIN sys.schemas sch
on t.schema_id = sch.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND p.rows = 0
GROUP BY
sch.name,t.Name, p.Rows
ORDER BY
sch.name,t.Name
在计算不同分区中的行总数时,我们考虑的是索引id
(0,1)
- 堆的索引id=0
index\u id=1表示聚集索引
index\u id>1用于非聚集索引。
索引id
- 堆表将具有
索引\u id=0
- 群集表将具有
索引\u id=1
sys.partitions
比较rows=0
SELECT
OBJECT_NAME(T.OBJECT_ID) AS TABLE_NAME,
SUM(P.ROWS) AS TOTAL_ROWS
FROM
SYS.TABLES T
INNER JOIN
SYS.PARTITIONS P
ON T.OBJECT_ID = P.OBJECT_ID
WHERE
P.INDEX_ID IN (0,1)
GROUP BY
T.OBJECT_ID
HAVING
SUM(P.ROWS) > 0
SELECT
sch.name as SchemaName,
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.partitions p ON t.object_id = p.OBJECT_ID
INNER JOIN sys.schemas sch
on t.schema_id = sch.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND p.rows = 0
GROUP BY
sch.name,t.Name, p.Rows
ORDER BY
sch.name,t.Name
在单个数据库或多个数据库中?在一个数据库中获取非空表如何?@Peterson:看。我结束了使用这些代码,因为我不知道我在做什么。。我刚刚添加了databasename。通知…我喜欢包含少于0行的表的方式;)@乔什诺,我修好了。真不敢相信这样持续了这么长时间。除非用户是服务器管理员,否则这种方法不起作用。这将产生“在数据库“”中拒绝查看数据库状态权限”。这是唯一可以运行的查询,而无需用户是服务器管理员(或明确授予数据库的查看数据库状态权限)。