This is a little complicated, but it's doable:
UPDATE MyTable SET RollNo=j.RowNo
FROM MyTable INNER JOIN
(SELECT Id, ROW_NUMBER() OVER (ORDER BY [Name]) AS RowNo FROM MyTable) as j
ON MyTable.Id = j.Id
When you
SELECT * FROM MyTable
after that, you will partly get what you want: The rows will not be ordered, but the Roll_no will be as you wanted.
To return them in the exact order you want, you need to specify a sort order - because SQL can return rows in any order convenient to it if you don't:
SELECT * FROM MyTable ORDER BY RollNo