Desafio: Usando ORDER BY dentro de uma VIEW

Deixo compartilhar uma situação que ocorreu no trabalho: o desenvolvedor utilizava uma view para retornar os dados ordenados. Segundo ele, o comando abaixo funcionava no SQL 2000, mas deixou de funcionar no SQL 2005.

CREATE VIEW vwOperacao
AS
SELECT * FROM tbOperacao
ORDER BY data

 Msg 1033, Level 15, State 1, Procedure vwOperacao, Line 4
The ORDER BY clause is invalid in views, inline functions, 
derived tables, subqueries, and common table expressions, 
unless TOP or FOR XML is also specified.

Seguindo as orientações da própria mensagem, ele decidiu utilizar a seguinte notação:

 CREATE VIEW vwOperacao 
AS
SELECT TOP 100 PERCENT * FROM tbOperacao
ORDER BY data

Qual o problema nisso? Ao consultar a View, os resultados não obedecem ao ORDER BY.

 select * FROM vwOperacao WHERE oper = 'JOE'

Perguntas:

1) Por que o comando ORDER BY é inválido em VIEWS (Erro 1033) exceto se houver a expressão TOP?

2) Por que os resultados retornam fora de ordem apesar do ORDER BY estar definido na View?

3) Qual seria uma correção rápida? (sim, existe um quebra-galho!)

Quem souber a resposta, por favor, poste nos comentários! (Utilize o script anexado no post para criar a tabela)

DesafioOrderBy.sql