Você pode usar
ROW_NUMBER
em TSQL (2005 em diante) para fazer isso:SELECT ID, Foo, Bar
FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) AS Row,
ID, Foo, Bar
FROM SomeTable) tmp
WHERE Row >= 50 AND Row <= 100
Ou com LINQ-to-SQL etc:
var qry = ctx.Table.Skip(50).Take(50); // or similar