Ecco una query veloce per il conteggio di tutte le tabelle di un database, senza utilizzare cursori:
DECLARE @u TABLE (id INT, [schema] VARCHAR(200), name VARCHAR(1000))
INSERT INTO @u
SELECT ROW_NUMBER() OVER (ORDER BY s.name, t.name), s.name, t.name
FROM sys.tables t
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
DECLARE @t TABLE (name VARCHAR(1000), c INT)
WHILE (SELECT COUNT(*) FROM @u) > 0
BEGIN
DECLARE @n VARCHAR(1000), @s VARCHAR(200)
SELECT TOP 1 @s = QUOTENAME([schema]), @n = QUOTENAME(name) FROM @u
INSERT INTO @t EXEC ('SELECT ''' + @s + '.' + @n + ''', COUNT(*) FROM ' + @s + '.' + @n)
DELETE FROM @u WHERE id = (SELECT TOP 1 id FROM @u)
END
SELECT * FROM @t