• About the whole row count issue. I know this isn't bullet proof but SQL is already tracking the row counts in every table. You don't need to create any Triggers and keep your own "tally" tables. Now, of course if you're paging a View, you'll still have to get the row counts using one of your methodologies, however, you can use the following query for tables:

    DECLARE @Object SysName

    SET @Object = 'dbo.MyTable' -- Schema.ObjectName

    -- Get RowCount for Object

    -- NOTE: Sometimes there are multiple rows returned when a Table has many indexes,

    -- however, each index contains the same value for the row count

    SELECT TOP 1 P.Rows

    FROM sys.partitions P

    INNER JOIN sys.indexes I ON (P.object_id = I.object_id) AND (P.index_id = I.index_id)

    INNER JOIN sys.objects O ON (P.object_id = O.object_id)

    WHERE (

    -- O.type IN('S', 'U')

    -- AND

    (I.type IN(0,1))

    )

    AND (

    O.name = PARSENAME(@Object, 1)

    AND O.[schema_id] = IsNull(SCHEMA_ID(PARSENAME(@Object, 2)), O.[schema_id])

    )

    ORDER BY O.name

    You can also do the same in SQL 2000 by querying the dbo.sysindexes.