Andmete varukoopia ülekandmine uue MS SQL Serveri versioonist vanemasse versiooni

Eellugu

Ühel päeval, et paljastada viga, vajasin tootmisandmebaasi varukoopiat.

Olin üllatunud, et kohtasin järgmisi piiranguid:

  1. Andmebaasi varukoopia oli tehtud versioonil SQL Server 2016 ja ei olnud ühilduv minu SQL Server 2014.
  2. Minu tööarvutis kasutati operatsioonisüsteemi Windows 7, seega ei saanud ma uuendada SQL Server versioonile 2016
  3. Toetatud toode oli osa suuremast süsteemist, millel oli tugevalt seotud pärandarkitektuur ja mis pöördus ka teiste toodete ja andmebaaside poole, seega võis selle juurutamine teisele jaamale võtta väga kaua aega.

Kuna eelnev on kirjas, jõudsin järeldusele, et on aeg kohandatud lahenduste jaoks tööriistu rakendada.

Andmete taastamine varukoopiast

Otsustasin kasutada virtuaalmasinat Oracle VM VirtualBox Windows 10 (saate alla laadida testpildi Edge'i brauserile siit). Virtuaalmasinale oli installitud SQL Server 2016 ja sellel taastati rakenduse andmebaas varukoopiast (juhend).

SQL Serveri ligipääsu seadistamine virtuaalmasinas

Edasi tuli teha mõned sammud, et võimaldada ligipääsu SQL Serverile väljastpoolt:

  1. Tulekahju seina jaoks lisada reegel, mis võimaldab päringud porti 1433.
  2. Soovitav on, et serverile juurdepääs ei toimuks Windowsi autentimise kaudu, vaid SQL-i abil sisselogimise ja parooli kaudu (nii on ligipääsu seadistamine lihtsam). Ent sel juhul ei tohi unustada SQL Serveri omadustes lubada SQL-i autentimist.
  3. SQL Serveri kasutaja seadetes vahekaardil Kasutaja kaardistamine märkida taastatud andmebaasile kasutaja roll db_securityadmin.

Andmete üleviimine

Tegelikult koosneb andmete üleviimine kahest etapist:

  1. Andmeskeemi üleviimine (tabelid, vaated, salvestatud protseduurid jne)
  2. Andmete üleviimine

Andmeskeemi üleviimine

Teeme järgmised toimingud:

  1. Valime Ülesanded -> Generaator Skriptid ülevaatamiseks andmebaasile.
  2. Valime vajaliku objekti üleviimiseks või jätame vaikesätte (sel juhul luuakse skriptid kõigi andmebaasi objektide jaoks).
  3. Määrame skripti salvestamise seaded. Mugavam on skript salvestada ühte faili Unicode-kodeeringus. Nii ei pea katkestuse korral kõiki samme uuesti tegema.

Pärast skripti salvestamist saab seda käivitada algses SQL Serveris (vana versioon), et luua vajalik andmebaas.

Tähelepanu: Pärast skripti täitmist tuleb kontrollida, kas varundamisandmebaasi seadistused ja skripti abil loodud andmebaasi seadistused kattuvad. Minu puhul puudus skriptis COLLATE seade, mis põhjustas andmete ülekandmisel tõrke ja lisakarbonaadi loomisprotsessis, kasutades täiustatud skripti.

Andmete üleviimine

Andmete ülekandmisel tuleb keelata kõik piirangute kontrollid andmebaasis:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Andmete ülekandmine toimub andmete impordi võluri kaudu. Tasks -> Import Data SQL Serveris, kus asub skripti abil loodud andmebaas:

  1. Määrake ühenduse seadistused allikaga (SQL Server 2016 virtuaalmasinas). Kasutasin andmeallikaks: SQL Server Native Client ja ülalmainitud SQL-autentimine.
  2. Määrake ühenduse seadistused sihtpunkti (SQL Server 2014 hostmasinas).
  3. Seejärel seadistame mappimise. Tuleb valida kõik mitte lugemiseks ainult objektid (näiteks vaateid valima ei pea). Täiendavate valikute seas tuleks valida "Luba insert identity-veergudesse", kui selliseid kasutatakse.
    Tähelepanu: kui proovite valida mitu tabelit ja määrata neile omaduse "Luba insert identity-veergudesse" omadus oli varem juba määratud vähemalt ühe valitud tabeli jaoks, siis dialoogis tuvastatakse, et omadus on juba määratud kõigile valitud tabelitele. See fakt võib segadust tekitada ja põhjustada ülekandevigu.
  4. Käivitame ülekande.
  5. Taastame piirangute kontrolli:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Kui esinevad mingid vead, kontrollige seadistusi, kustutage valeandmete alusel loodud andmebaas, looge see uuesti skripti abil, tehke parandused ja korrake andmete ülekannet.

Kokkuvõte

See ülesanne esineb üsna harva ja tuleneb ainult ülaltoodud piirangutest. Enamasti on lahenduseks SQL Serveri uuendamine või kaugserveriga ühendamine, kui rakenduse arhitektuur seda võimaldab. Kuid keegi ei ole kaitstud pärandkoodi ja kehva arenduse tõttu esinevate probleemide eest. Loodan, et teil ei ole seda juhendit vaja, ja kui see siiski osutub vajalikuks, aitab see säästa palju aega ja närve. Aitäh tähelepanu eest!

Kasutatud allikate loetelu

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster