Paginar registros en SQL Server 2005
Este es un Stored Procedure en SQL Server 2005 que permite hacer la paginación de registros de una tabla en particular, el truco no es mío, no me gusta quedarme con créditos ajenos, pero no recuerdo la dirección de donde lo conseguí, en todo caso, cabe aclarar que le hice algún ligero cambio para que sea un poco mas entendible. Ahí les va el código (obviamente se usa página de ejemplo, la personalización les corresponde a ustedes):
CREATE PROCEDURE dbo.uspPaginarUsuarios
@PageSize int,
@PageNumber int
AS
BEGIN
SELECT idUsuario, nombreUsuario
FROM (
SELECT idUsuario, nombreUsuario,
ROW_NUMBER() OVER (ORDER BY idUsuario) AS RowNumber
FROM Usuarios
) AS miTabla
WHERE RowNumber BETWEEN (@PageSize * @PageNumber) + 1 AND @PageSize * (@PageNumber + 1)
END
Una página es un conjunto de n registros que se muestran de un conjunto mayor. La idea es dividir la cantidad total de registros entre la cantidad de registros que se desea mostrar por vez. Cada conjunto dividido se conoce como página.
Aclarar solamente que la primera página será la número 0, y que si escriben un número de página mayor al de las que existen el SP devolverá 0 registros.
Saludos.

wow, bello código
Gracias, me ha servido de mucho este artículo.
Funciona excelente.
Qué maravilla, ehhhh
No funciona para ciertos casos.
Probad por ejemplo
@PageSize =1
@PageNumber=4
Salen resultados en una tabla con 6 registros por ejemplo, y no debe salir nada.
De aqui la conseguiste: http://www.desarrolloweb.com/faq/paginacion-stored-procedure-sql-server.html