Não sei por que o SSMS não leva em conta a ordem de execução, mas simplesmente não o faz. Isso não é um problema para bancos de dados pequenos, mas e se seu banco de dados tiver 200 objetos? Nesse caso, a ordem de execução é importante porque não é realmente fácil passar por tudo isso.
Para scripts não ordenados gerados por SSMS, você pode seguir
a) Execute o script (alguns objetos serão inseridos de alguma forma, haverá alguns erros)
b) Remova todos os objetos do script que foram adicionados ao banco de dados
c) Volte para a) até que tudo seja eventualmente executado
A opção alternativa é usar uma ferramenta de terceiros, como ApexSQL Script ou qualquer outra ferramenta já mencionada neste tópico (pacote de ferramentas SSMS, Red Gate e outros).
Tudo isso cuidará das dependências para você e economizará ainda mais tempo.