Det här är naturligtvis en väldigt bred fråga, men jag ska försöka ge några förslag på hur jag skulle ställa mig till det:
-
Det första målet är att skriva några skript (lagrade procedurer) som testar din 2005-databas. Kör alla dina befintliga sprocs, räkna poster i tabeller, listindex etc. Du gör detta så att du kan köra dem 2005 och sedan 2008/2012 efter att du har migrerat klart. Det hjälper dig att bevisa schemat och uppgifterna gick över.
-
Gör en säkerhetskopia av 2005 års databas och återställ den 2008/2012. Du kan göra detta parallellt med steg 1 om du vill. Börja bara använda den. Har allt importerats ok? Klarar den ögontestet? Några fel du behöver åtgärda?
-
Efter steg 2, fortsätt och gör en kopia av din nuvarande .NET 2.0-kod och rikta den mot den nya instansen från steg 2. Fungerar applikationen? Återigen, klarar den ögontestet?
-
Iterera med ansökan kopian och den nya databasen tills du känner dig säker. Om du har en testsvit för din kodbas så hjälper det dig självklart att bevisa att saker och ting är ok istället för att använda din intuition.
Så långt som att gå från .NET 2.0 till .NET 4.0/4.5 ...
-
Kodbasen ska vara bakåtkompatibel. Det enda problemet jag kunde se är om andra system är beroende av din kodbas. Om du har ett kärnbibliotek och vill uppgradera det till 4.0 - och ett annat system som fortfarande är på 2.0 behöver det biblioteket, då har du problem.
-
Jag skulle definitivt vänta med att uppgradera .NET-versionen till efter du avslutar databasmigreringen. Om det går fel under migreringen vill du veta att det inte är .NET. Det hjälper dig att begränsa buggar och problem.
Efter att ha gjort många migreringar som denna några allmänna råd:
-
Gör gärna nya instanser/system och testa, testa, testa. Försök inte arbeta direkt med befintlig kod i källkontroll eller arbeta med befintliga distributioner/servrar. Bara kopiera det och testa.
-
Skriv verktyg och skript som hjälper dig att automatisera systemtester. Du vill kunna veta "Ja, så vitt jag vet kom schemat över exakt samma."
-
Gör inte dina iterationer för långa. Iterera på små sätt och sedan bevisa att det fungerade och gå sedan vidare.
Hoppas det hjälper.