SQL Server 2008:我有1000个表,我需要知道哪些表有数据
SMSS中是否有方法检测表是否有任何记录?我需要得到一个有记录的表的列表。也许有一个sql语句可以实现这一点?您可以使用以下存储过程:SQL Server 2008:我有1000个表,我需要知道哪些表有数据,sql,sql-server-2008,Sql,Sql Server 2008,SMSS中是否有方法检测表是否有任何记录?我需要得到一个有记录的表的列表。也许有一个sql语句可以实现这一点?您可以使用以下存储过程: EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" 这将为数据库中的每个表返回一个resultset(每个表都显示名称、行数以及其他信息) 以下是如何将它们放入表变量中,并按行数排序: DECLARE @TBL TABLE ( [name] nvarchar(500), [rows]
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
这将为数据库中的每个表返回一个resultset(每个表都显示名称、行数以及其他信息)
以下是如何将它们放入表变量中,并按行数排序:
DECLARE @TBL TABLE (
[name] nvarchar(500),
[rows] bigint,
[reserved] nvarchar(500),
[data] nvarchar(500),
[index_size] nvarchar(500),
[unused] nvarchar(500)
)
INSERT INTO @TBL
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
SELECT * FROM @TBL
ORDER BY [rows] DESC
尝试此操作-提供表名和行数:
SELECT
t.NAME AS TableName,
SUM(p.rows) AS [RowCount]
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
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name
ORDER BY
SUM(p.rows) DESC
选择
t、 名称为TableName,
总和(p.行)为[行计数]
从…起
系统表t
内连接
t.OBJECT\u ID=i.OBJECT\u ID上的sys.index i
内连接
i.object\u id=p.object\u id和i.index\u id=p.index\u id上的sys.p分区
哪里
i、 index_id当您的问题特别提到SSM时,您也可以在对象资源管理器中右键单击数据库,然后从快捷菜单中单击do
Reports -> Standard Reports -> Disc Usage By Table
更简单的语法:
SELECT
[Name] = o.name,
[RowCount]= SUM(p.row_count)
FROM SYS.DM_DB_PARTITION_STATS p
INNER JOIN SYS.TABLES o ON p.[object_ID] = o.[object_id]
WHERE index_id <= 1 -- Heap or clustered index only
GROUP BY o.name
ORDER BY 2 desc
选择
[Name]=o.Name,
[行计数]=总和(p.行计数)
来自SYS.DM\u DB\u分区\u STATS\p
p.[object\u ID]=o.[object\u ID]上的内部联接SYS.o表
如果index_idHope,它可以帮助您-
SELECT name AS [TableList] FROM SYS.DM_DB_PARTITION_STATS s
INNER JOIN sys.tables t ON t.[object_id] = s.[object_id]
WHERE row_count = 0
此代码显示不包含任何数据或行的表列表
谢谢 如何将其限制为特定DB?如果在同一个sql server上有多个具有相同表名的数据库,则行计数将相加。@OndraPeterka:否,这始终在一个数据库的上下文中执行,并且只显示这些表。这不会显示服务器所有数据库的所有表我正在使用它,它会从每个数据库返回数据