Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我可以选择在SSMS中有记录的表列表吗?_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server 我可以选择在SSMS中有记录的表列表吗?

Sql server 我可以选择在SSMS中有记录的表列表吗?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我有一个数据库的备份,它被恢复到我的服务器上,服务器上有100多个表,但我知道只有少数表有记录。是否可以编写一个查询来选择包含记录的表列表?这是SQL Server 2008 R2。请尝试以下操作: CREATE TABLE #tab_info ( [name] NVARCHAR(128), [rows] CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18),

我有一个数据库的备份,它被恢复到我的服务器上,服务器上有100多个表,但我知道只有少数表有记录。是否可以编写一个查询来选择包含记录的表列表?这是SQL Server 2008 R2。

请尝试以下操作:

CREATE TABLE #tab_info
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 

INSERT #tab_info EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' 

SELECT *
FROM   #tab_info
WHERE [rows] > 0
试试这个:

CREATE TABLE #tab_info
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    reserved VARCHAR(18), 
    data VARCHAR(18), 
    index_size VARCHAR(18),
    unused VARCHAR(18)
) 

INSERT #tab_info EXEC sp_msForEachTable 'EXEC sp_spaceused ''?''' 

SELECT *
FROM   #tab_info
WHERE [rows] > 0
试一试:

SELECT so.name,
       ps.row_count
FROM   sys.dm_db_partition_stats ps
       INNER JOIN sys.objects so
         ON ps.object_id = so.object_id
WHERE  so.type = 'u'
       AND row_count > 0
ORDER  BY so.name
可能值得注意的是,行计数不能保证100%的准确性(我相信,此信息仅作为查询优化人员的指导原则),如果您需要它的准确性,没有什么比使用
COUNT
运行实际的表扫描更好的了

但是,由于您只想检查是否有行,这就足够了。

试一试:

SELECT so.name,
       ps.row_count
FROM   sys.dm_db_partition_stats ps
       INNER JOIN sys.objects so
         ON ps.object_id = so.object_id
WHERE  so.type = 'u'
       AND row_count > 0
ORDER  BY so.name
可能值得注意的是,行计数不能保证100%的准确性(我相信,此信息仅作为查询优化人员的指导原则),如果您需要它的准确性,没有什么比使用
COUNT
运行实际的表扫描更好的了

但是,由于您只想检查是否有行,这就足够了