вы можете использовать общее выражение таблицы для этого:
;with cte as (
select top (@MaxRecords)
status
from Messages
where Status = 'N' and InsertDate >= getdate()
order by ...
)
update cte set
status = 'P'
output inserted.*
Этот использует тот факт, что в SQL Server можно обновить cte, например обновляемое представление.