检查任何数据库表是否具有任何行

时间:2018-06-28 19:44:41

标签: sql-server entity-framework linq-query-syntax

我试图了解如何使用实体框架检查数据库中的任何表是否包含数据。我可以检查一张桌子,但如何一次检查所有桌子? ef6有什么选择吗?

#!/bin/sh

daemon="/path/to/uwsgi"

. /etc/rc.d/rc.subr

rc_reload="NO"

rc_stop() {
        ${daemon} --stop /path/to/uwsgi.pid
}

rc_cmd $1

任何有关如何遍历实体的指针都会有所帮助。

2 个答案:

答案 0 :(得分:3)

这是使用t-sql进行此操作的一种方法。在大多数系统上,这应该很快。在不到一秒钟的时间内,这在我们的ERP数据库中返回了。它在15,000多个分区统计信息中显示了4,210亿行。

select sum(p.row_count)
from sys.dm_db_partition_stats p
join sys.objects o on o.object_id = p.object_id
where o.type not in ('S', 'IT') --excludes system and internal tables.

答案 1 :(得分:1)

类似于@SeanLange,但显示没有任何行的表的架构名称和表名称。

SELECT  Distinct OBJECT_SCHEMA_NAME(p.object_id) AS [Schema], 
        OBJECT_NAME(p.object_id) AS [Table]
FROM    sys.partitions p
        INNER JOIN sys.indexes i 
            ON p.object_id = i.object_id
            AND p.index_id = i.index_id
WHERE   OBJECT_SCHEMA_NAME(p.object_id) != 'sys'
        And p.Rows = 0    
ORDER BY [Schema], [Table]