MS SQL 2008 – 获取数据库中的所有表名及其行数

我试图通过应用程序(由他人开发)来确定哪些表受到数据更新的影响。 数据库中有200多个表,我想避免检查每个表的变化。

有没有其他方法可以列出所有表名和行数?

select table_name from information_schema.tables 

列出所有在我的数据库中的表买我怎样包括行数以及?

 SELECT sc.name +'.'+ ta.name TableName ,SUM(pa.rows) RowCnt FROM sys.tables ta INNER JOIN sys.partitions pa ON pa.OBJECT_ID = ta.OBJECT_ID INNER JOIN sys.schemas sc ON ta.schema_id = sc.schema_id WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0) GROUP BY sc.name,ta.name ORDER BY SUM(pa.rows) DESC 

看到这个:

  • SQL SERVER – 查找表中的行数 – 在数据库中查找最大的表

获取数据库中的所有表:

 select * from INFORMATION_SCHEMA.TABLES 

获取数据库中的所有列:

 select * from INFORMATION_SCHEMA.columns 

在一个数据库中获取所有视图:

 select * from INFORMATION_SCHEMA.TABLES where table_type = 'view' 

发布完整性。

如果你正在寻找所有数据库中的所有表的行数 (这是我正在寻找),然后我发现这个和这个组合的工作。 不知道是否是最佳的:

 SET NOCOUNT ON DECLARE @AllTables table (DbName sysname,SchemaName sysname, TableName sysname, RowsCount int ) DECLARE @SQL nvarchar(4000) SET @SQL='SELECT ''?'' AS DbName, s.name AS SchemaName, t.name AS TableName, p.rows AS RowsCount FROM [?].sys.tables t INNER JOIN sys.schemas s ON t.schema_id=s.schema_id INNER JOIN [?].sys.partitions p ON p.OBJECT_ID = t.OBJECT_ID' INSERT INTO @AllTables (DbName, SchemaName, TableName, RowsCount) EXEC sp_msforeachdb @SQL SET NOCOUNT OFF SELECT DbName, SchemaName, TableName, SUM(RowsCount), MIN(RowsCount), SUM(1) FROM @AllTables WHERE RowsCount > 0 GROUP BY DbName, SchemaName, TableName ORDER BY DbName, SchemaName, TableName