Transfert vun Backupsatellit Daten vun enger neier Versioun vum MS SQL Server op eng al Versioun

Virgeschicht

Eemol, fir e Feeler ze reproduzéieren, brauch ech e Backup vun der Produktiounsdatenbank.

Zu menger Iwwerraschung sinn ech an déi folgend Aschränkungen gerannt:

  1. D'Datebankbackup gouf op der Versioun gemaach SQL Server 2016 a war net kompatibel mat mengem SQL Server 2014.
  2. Op menger Aarbecht Computer, der OS benotzt war Windows 7also ech konnt net update SQL Server bis Versioun 2016
  3. De ënnerstëtzte Produkt war Deel vun engem gréissere System mat enger enk gekoppelter Legacy-Architektur an huet och mat anere Produkter a Basen geschwat, sou datt et eng ganz laang Zäit dauert fir et op eng aner Statioun z'installéieren.

Mat dem uewe genannte sinn ech zur Conclusioun komm datt d'Zäit komm ass fir Crutches vun net-Standardléisungen.

Daten aus engem Backup restauréieren

Ech hu gewielt eng virtuell Maschinn ze benotzen Oracle VM VirtualBox mat Windows 10 (Dir kënnt en Testbild fir den Edge Browser huelen vun hei). SQL Server 2016 gouf op der virtueller Maschinn installéiert an d'Applikatiounsdatebank gouf aus dem Backup restauréiert (manuell).

Den Zougang zum SQL Server op enger virtueller Maschinn konfiguréieren

Als nächst war et néideg e puer Schrëtt ze huelen fir Zougang zu SQL Server vu baussen ze kréien:

  1. Fir d'Firewall, füügt eng Regel un fir Port Ufroen ze iwwersprangen 1433.
  2. Et ass wënschenswäert datt den Zougang zum Server net duerch Windows Authentifikatioun geet, awer duerch SQL mat engem Login a Passwuert (et ass méi einfach den Zougang opzestellen). Wéi och ëmmer, an dësem Fall musst Dir drun erënneren datt SQL Authentifikatioun an de SQL Server Eegeschafte aktivéiert gëtt.
  3. A Benotzer Astellungen op SQL Server op der Reiter Benotzer Mapping spezifizéiert d'Benotzerroll fir déi restauréiert Datebank db_securityadmin.

Dateniwwerdroung

Eigentlech besteet d'Datentransfer selwer aus zwou Etappen:

  1. Dateschematransfer (Tabellen, Usiichten, gespäichert Prozeduren, asw.)
  2. Iwwerdroung vun den Donnéeën selwer

Daten Schema Transfert

Mir maachen déi folgend Operatiounen:

  1. Wielt Aufgaben -> Scripten generéieren fir eng portable Basis.
  2. Wielt d'Objeten déi Dir braucht fir de Standardwäert ze transferéieren oder ze verloossen (an dësem Fall ginn Scripte fir all Datebankobjekte erstallt).
  3. Gitt d'Astellunge fir de Skript ze späicheren. Et ass am meeschte praktesch de Skript an enger eenzeger Unicode Datei ze späicheren. Dann, am Fall vun Echec, braucht Dir net all Schrëtt erëm ze widderhuelen.

Wann de Skript gespäichert ass, kann et op den ursprénglechen SQL Server (al Versioun) lafen fir déi erfuerderlech Basis ze kreéieren.

Warnung: Nodeems Dir de Skript ausgefouert hutt, musst Dir d'Korrespondenz tëscht den Astellunge vun der Datebank aus dem Backup an der Datebank erstallt vum Skript iwwerpréiwen. A mengem Fall gouf et keng Astellung fir COLLATE am Skript, wat zu engem Echec gefouert huet beim Transfert vun Daten an Danz mat enger Tambourin fir d'Datebank mat dem ergänzten Skript nei ze kreéieren.

Dateniwwerdroung

Ier Dir Daten transferéiert, musst Dir d'Kontroll vun all Restriktiounen op der Datebank deaktivéieren:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Datenübertragung gëtt mam Datenimportassistent duerchgefouert Aufgaben -> Daten importéieren op SQL Server, wou d'Datebank erstallt vum Skript läit:

  1. Gitt d'Verbindungsastellungen un d'Quell un (SQL Server 2016 op enger virtueller Maschinn). Ech benotzt Daten Quell SQL Server Native Client an déi genannte SQL Authentifikatioun.
  2. Gitt d'Verbindungsastellunge fir d'Destinatioun un (SQL Server 2014 op der Hostmaschinn).
  3. Als nächst setzt d'Mapping op. All muss ausgewielt ginn net nëmmen liesen Objeten (zum Beispill, Vue muss net ausgewielt ginn). Als zousätzlech Optiounen, wielt "Erlaabt Aféierung an Identitéitskolonnen"wann esou benotzt ginn.
    Warnung: wann, wann probéiert e puer Dëscher ze wielen an hir Propriétéit Formatioun "Erlaabt Aféierung an Identitéitskolonnen" d'Propriétéit ass scho fir op d'mannst ee vun de gewielten Dëscher gesat ginn, den Dialog weist datt d'Propriétéit scho fir all ausgewielten Dëscher gesat gouf. Dëse Fakt kann duerchernee sinn an zu Migratiounsfehler féieren.
  4. Mir starten den Transfer.
  5. Restauréieren Constraint Check:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Wann Feeler optrieden, iwwerpréift mir d'Astellungen, läschen d'Datebank, déi mat Feeler erstallt gouf, erstallt se aus dem Skript, maachen Korrekturen a widderhuelen den Datenübertragung.

Konklusioun

Dës Aufgab ass zimlech rar a geschitt nëmme wéinst den uewe genannten Aschränkungen. Déi meescht üblech Léisung ass SQL Server ze upgrade oder mat engem Fernserver ze verbannen wann d'Applikatiounsarchitektur et erlaabt. Wéi och ëmmer, keen ass immun géint Legacy Code a kromme Hänn vu schlechter Qualitéit Entwécklung. Ech hoffen, datt Dir dës Instruktioun net braucht, awer wann Dir se nach ëmmer braucht, hëlleft et vill Zäit an Nerven ze spueren. Merci fir är Opmierksamkeet!

Lëscht vun de Quelle benotzt

Source: will.com