Based on my experience with a big table, the best approach is to get a Total Rows number in a separate call:
set statistics io on
set statistics time on
DECLARE @TotRows AS INT
DECLARE @startRow INT ; SET @startrow = 50
;WITH cols
AS
(
SELECT table_name, column_name,
ROW_NUMBER() OVER(ORDER BY table_name, column_name) AS seq
FROM [INFORMATION_SCHEMA].columns
)
--select * from cols
SELECT table_name, column_name
FROM cols
WHERE seq BETWEEN @startRow AND @startRow + 49
ORDER BY seq
select @TotRows=count(*)
FROM [INFORMATION_SCHEMA].columns
--SELECT @TotRows
set statistics time off
set statistics io off