ProHoster > Blog > Bestjoer > It oerdragen fan reservekopygegevens fan in nije ferzje fan MS SQL Server nei in âldere ferzje
It oerdragen fan reservekopygegevens fan in nije ferzje fan MS SQL Server nei in âldere ferzje
prehistoarje
Ienris, om in brek te reprodusearjen, hie ik in reservekopy nedich fan 'e produksjedatabase.
Ta myn ferrassing kaam ik de folgjende beheinings tsjin:
De databank-backup is makke op 'e ferzje SQL Server 2016 en wie net kompatibel mei mines SQL Server 2014.
Op myn wurkkomputer wie it OS Windows 7dus ik koe net bywurkje SQL Server oant ferzje 2016
It stipe produkt wie diel fan in grutter systeem mei in strak keppele legacy arsjitektuer en ek tagong ta oare produkten en bases, dus it koe in hiel lange tiid te ynsetten nei in oar stasjon.
Mei it each op it boppesteande kaam ik ta de konklúzje dat de tiid kommen is foar de krukken fan net-standert oplossingen.
Gegevens weromsette fan reservekopy
Ik besleat in firtuele masine te brûken Oracle VM VirtualBox mei Windows 10 (jo kinne in testôfbylding nimme foar de Edge-blêder fan hjir). SQL Server 2016 waard ynstalleare op 'e firtuele masine en de applikaasjedatabase waard weromset fan in reservekopy (hantlieding).
Ynstelle fan tagong ta SQL Server op in firtuele masine
Dêrnei wie it nedich om wat stappen te nimmen om it mooglik te meitsjen fan tagong ta SQL Server fan bûten:
Foar de brânmuorre, foegje in regel ta om poartefersiken troch te jaan 1433.
It is oan te rieden dat tagong ta de tsjinner net foarkomt fia Windows-ferifikaasje, mar fia SQL mei in oanmelding en wachtwurd (it is makliker om tagong te konfigurearjen). Yn dit gefal moatte jo lykwols ûnthâlde om SQL-ferifikaasje yn te skeakeljen yn 'e SQL Server-eigenskippen.
Yn 'e brûkersynstellingen op SQL Server op' e ljepper Meidogger Mapping spesifisearje de brûker rol foar de restaurearre databank db_securityadmin.
Gegevens oerdracht
Eigentlik bestiet de gegevensoerdracht sels út twa stadia:
Kies Taken -> Skripten generearje foar in draachbere basis.
Selektearje de objekten dy't jo moatte oerdrage of ferlitte de standertwearde (yn dit gefal wurde skripts makke foar alle databankobjekten).
Spesifisearje ynstellings foar it bewarjen fan it skript. De maklikste manier is om it skript op te slaan yn ien bestân yn Unicode-kodearring. Dan, as d'r in mislearring is, hoege jo net alle stappen opnij te werheljen.
Sadree't it skript is bewarre, kin it wurde útfierd op 'e boarne SQL Server (âlde ferzje) om de fereaske databank te meitsjen.
Warskôging: Nei it útfieren fan it skript moatte jo de konsistinsje fan 'e databankynstellingen kontrolearje fan' e reservekopy en de databank makke troch it skript. Yn myn gefal hie it skript gjin ynstelling foar COLLATE, wat late ta in mislearring by it oerdragen fan gegevens en dûnsjen mei in tamboerine om de databank opnij te meitsjen mei it fergrutte skript.
Gegevens oerdracht
Foardat jo gegevens oerdrage, moatte jo it kontrolearjen fan alle beheiningen op 'e databank útskeakelje:
Gegevens oerdracht wurdt útfierd mei de wizard Gegevens ymportearje Taken -> Gegevens ymportearje op SQL Server, wêr't de database makke troch it skript leit:
Spesifisearje de ferbiningynstellingen nei de boarne (SQL Server 2016 op in firtuele masine). Ik brûkte gegevensboarne SQL Server Native Client en de earder neamde SQL-ferifikaasje.
Wy spesifisearje de ferbining ynstellings nei de bestimming (SQL Server 2014 op de host masine).
Dêrnei sette wy de mapping op. Jo moatte alles selektearje net allinich lêzen objekten (bygelyks werjeften hoege net te selektearjen). Oanfoljende opsjes moatte wurde selektearre "Tastaan ynfoegje yn identiteitskolommen", as sokke wurde brûkt. Warskôging: as jo besykje te selektearjen ferskate tabellen en tawize it pân oan harren "Tastaan ynfoegje yn identiteitskolommen" it pân is al earder ynsteld foar op syn minst ien fan de selektearre tabellen, it dialoochfinster sil oanjaan dat it pân is al ynsteld foar alle selektearre tabellen. Dit feit kin betiizjend wêze en liede ta oerdrachtflaters.
As der flaters foarkomme, kontrolearje wy de ynstellings, wiskje de database makke mei flaters, meitsje it opnij oan fan it skript, meitsje korreksjes en werhelje de gegevensoerdracht.
konklúzje
Dizze taak is frij seldsum en ûntstiet allinich troch de boppesteande beheiningen. De meast foarkommende oplossing is om SQL-tsjinner te upgrade of te ferbinen mei in tsjinner op ôfstân as de applikaasje-arsjitektuer it talit. Nimmen is lykwols feilich foar legacy-koade en de kromme hannen fan ûntwikkeling fan minne kwaliteit. Ik hoopje dat jo dizze ynstruksjes net nedich binne, en as jo se nedich binne, sille se jo helpe om in protte tiid en senuwen te besparjen. Tank foar jo oandacht!