Esta é uma pergunta muito ampla, é claro, mas vou tentar dar algumas sugestões sobre como eu abordá-la:
-
O primeiro objetivo é escrever alguns scripts (procedimentos armazenados) que testem seu banco de dados de 2005. Execute todos os seus sprocs existentes, conte registros em tabelas, liste índices, etc. Você faz isso para poder executá-los em 2005 e depois em 2008/2012 após concluir a migração. Isso ajudará você a provar o esquema e os dados passaram com sucesso.
-
Faça um backup do banco de dados de 2005 e restaure-o em 2008/2012. Você pode fazer isso em paralelo à etapa 1, se desejar. Basta começar a usá-lo. Importou tudo ok? Passa no teste do olho? Algum erro que você precisa resolver?
-
Após a etapa 2, vá em frente e faça uma cópia do seu código .NET 2.0 atual e aponte-o para a nova instância da etapa 2. O aplicativo funciona? Novamente, ele passa no teste do olho?
-
Repita com a cópia do aplicativo e o novo banco de dados até se sentir confiante. Se você tiver um conjunto de testes para sua base de código, obviamente, isso o ajudará a provar que as coisas estão bem, em vez de usar sua intuição.
Quanto a ir do .NET 2.0 para o .NET 4.0/4.5...
-
A base de código deve ser compatível com versões anteriores. O único problema que pude ver é se outros sistemas dependem de sua base de código. Se você tem uma biblioteca principal e deseja atualizá-la para 4.0 - e outro sistema que ainda está em 2.0 precisa dessa biblioteca, então você está com problemas.
-
Eu definitivamente esperaria para atualizar a versão .NET até depois você conclui a migração do banco de dados. Se as coisas derem errado durante a migração, você quer saber que não é .NET. Ele irá ajudá-lo a reduzir bugs e problemas.
Depois de ter feito muitas migrações como esta alguns conselhos gerais:
-
Sinta-se à vontade para criar novas instâncias/sistemas e testar, testar, testar. Não tente trabalhar diretamente com o código existente no controle do código-fonte ou trabalhar com implantações/servidores existentes. Basta copiá-lo e testar.
-
Escreva ferramentas e scripts que ajudam a automatizar os testes do sistema. Você quer ser capaz de saber "Sim, até onde eu sei, o esquema veio exatamente o mesmo."
-
Não faça suas iterações muito longas. Iterar de pequenas maneiras e, em seguida, provar que funcionou e, em seguida, seguir em frente.
Espero que ajude.