Du kan använda ROW_NUMBER
i TSQL (2005 och framåt) för att göra detta:
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
Eller med LINQ-till-SQL etc:
var qry = ctx.Table.Skip(50).Take(50); // or similar