This is by design. SELECT * FROM db is a query specification that can be used as either the top level in a relational stream, or somewhere in the middle, passing its selection on to another query specification. The SELECT * FROM db ORDER BY c1 can only be used as a top level select statement and not in the middle of a relational stream because ordering is not a relational operation.

By language convention, parentheses are permitted to delimit query specification (whose result must be relational), but not top level queries such as SELECT...ORDER BY.

See more at http://blogs.msdn.com/b/tsql_language/archive/2004/09/23/233453.aspx