使用主键行数获取所有表名
我有一个场景,我需要在两台服务器之间比较数据。
长话短说,我需要一个结果集,它给出了输出
SchemaName|TableName|RowCount_PrimaryKey
每当一个新学生加入一个独特的模式时就会创建Stu1200
并且这个模式有5个表
stu1200.class
stu1200.sub
stu1200.avg
stu1200.work
stu1200.blabla
我们的数据库中有500名学生。 所以500架构。 我需要比较500名学生的所有工作表。
为了做到这一点,我需要获得主键的计数,例如StuID
。 所以我需要像工作一样获得所有500个模式。
就像是
SchemaName TableName StuID_Count
stu1200 Work 70
Stu1201 Work 112
Stu1202 Work 9
如何才能做到这一点? 我有一个脚本,它对表的行数进行计数,但它没用,我只需要基于主键的行数。
注意:使用SQL Server 2000 :(
提前感谢您分享您的建议/经验。
您的设计非常值得怀疑,但这是以有效方式获得相对最新计数的一种方法。 在SQL Server 2005+中:
DECLARE @tablename SYSNAME;
SET @tablename = N'Work';
SELECT
SchemaName = OBJECT_SCHEMA_NAME([object_id]),
TableName = @tablename,
RowCount_PrimaryKey = SUM([rows])
FROM sys.partitions
WHERE OBJECT_NAME([object_id]) = @tablename
AND index_id IN (0,1)
GROUP BY OBJECT_SCHEMA_NAME([object_id])
ORDER BY SchemaName;
刚刚注意到SQL Server 2000。
DECLARE @tablename SYSNAME;
SET @tablename = N'Work';
SELECT
SchemaName = u.name,
TableName = @tablename,
i.rows
FROM
sys.sysindexes AS i
INNER JOIN sys.sysobjects AS o
ON i.id = o.id
INNER JOIN sys.sysusers AS u
ON o.uid = u.uid
WHERE i.indid IN (0,1)
AND o.name = @tablename;
链接地址: http://www.djcxy.com/p/17139.html
上一篇: get all table names with the primary key row count
下一篇: Problems when migrating from SQL Server 2000 to SQL Server 2008