It-trasferiment tad-dejta tal-backup minn verżjoni ġdida tal-MS SQL Server għal verżjoni eqdem

preistorja

Ladarba, biex nirriproduċi bug, kelli bżonn backup tad-database tal-produzzjoni.

B'sorpriża tiegħi, iltqajt mal-limitazzjonijiet li ġejjin:

  1. Il-backup tad-database sar fuq il-verżjoni SQL Server 2016 u ma kienx kompatibbli ma tiegħi SQL Server 2014.
  2. Fuq il-kompjuter tax-xogħol tiegħi kien l-OS Windows 7allura ma stajtx naġġorna SQL Server sal-verżjoni 2016
  3. Il-prodott appoġġjat kien parti minn sistema akbar b'arkitettura wirt akkoppjata sewwa u aċċessa wkoll prodotti u bażijiet oħra, għalhekk seta' jieħu żmien twil ħafna biex jiġi skjerat fi stazzjon ieħor.

Meta wieħed iqis dan ta 'hawn fuq, wasalt għall-konklużjoni li wasal iż-żmien għall-krozzi ta' soluzzjonijiet mhux standard.

Ir-restawr tad-data mill-backup

Iddeċidejt li nuża magna virtwali Oracle VM VirtualBox bil-Windows 10 (tista' tieħu immaġni tat-test għall-browser Edge għalhekk). SQL Server 2016 ġie installat fuq il-magna virtwali u d-database tal-applikazzjoni ġiet restawrata minn backup (istruzzjoni).

Twaqqif ta' aċċess għal SQL Server fuq magna virtwali

Sussegwentement, kien meħtieġ li jittieħdu xi passi biex ikun possibbli li wieħed jaċċessa SQL Server minn barra:

  1. Għall-firewall, żid regola li tippermetti li t-talbiet tal-port jgħaddu 1433.
  2. Huwa rakkomandabbli li l-aċċess għas-server iseħħ mhux permezz tal-awtentikazzjoni tal-Windows, iżda permezz ta 'SQL bl-użu ta' login u password (huwa aktar faċli li jiġi kkonfigurat l-aċċess). Madankollu, f'dan il-każ, trid tiftakar li tippermetti l-awtentikazzjoni SQL fil-proprjetajiet SQL Server.
  3. Fis-settings tal-utent fuq SQL Server fuq it-tab Immappjar tal-Utent speċifika r-rwol tal-utent għad-database restawrata db_securityadmin.

Trasferiment tad-data

Fil-fatt, it-trasferiment tad-data innifsu jikkonsisti f'żewġ stadji:

  1. It-trasferiment ta' skema tad-dejta (tabelli, fehmiet, proċeduri maħżuna, eċċ.)
  2. It-trasferiment tad-data innifsu

Trasferiment tal-Iskema tad-Data

Aħna nwettqu l-operazzjonijiet li ġejjin:

  1. Agħżel Kompiti -> Iġġenera Scripts għal bażi portabbli.
  2. Agħżel l-oġġetti li għandek bżonn biex tittrasferixxi jew tħalli l-valur default (f'dan il-każ, se jinħolqu skripts għall-oġġetti kollha tad-database).
  3. Speċifika l-issettjar biex issalva l-iskrittura. L-aktar mod konvenjenti huwa li tissejvja l-iskrittura f'fajl wieħed f'kodifikazzjoni Unicode. Imbagħad, jekk ikun hemm falliment, ma jkollokx bżonn tirrepeti l-passi kollha mill-ġdid.

Ladarba l-iskript jiġi ffrankat, jista 'jiġi eżegwit fuq is-sors SQL Server (verżjoni l-antika) biex tinħoloq id-database meħtieġa.

Twissija: Wara li tesegwixxi l-iskrittura, trid tiċċekkja l-konsistenza tas-settings tad-database mill-backup u d-database maħluqa mill-iskritt. Fil-każ tiegħi, l-iskrittura ma kellhiex setting għal COLLATE, li wassal għal falliment meta ttrasferixxi d-dejta u żfin b'tambourine biex terġa 'tinħoloq id-database bl-użu tal-iskript miżjud.

Trasferiment tad-data

Qabel ma tittrasferixxi d-data, trid tiddiżattiva l-iċċekkjar tar-restrizzjonijiet kollha fuq id-database:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

It-trasferiment tad-dejta jitwettaq bl-użu tal-Wizard tal-Importazzjoni tad-Data Kompiti -> Importa Data fuq SQL Server, fejn tinsab id-database maħluqa mill-iskrittura:

  1. Speċifika s-settings tal-konnessjoni mas-sors (SQL Server 2016 fuq magna virtwali). Uża Sors tad-Data Klijent Nattiv SQL Server u l-awtentikazzjoni SQL imsemmija hawn fuq.
  2. Aħna nispeċifikaw is-settings tal-konnessjoni mad-destinazzjoni (SQL Server 2014 fuq il-magna ospitanti).
  3. Sussegwentement waqqafna l-immappjar. Trid tagħżel kollha mhux qari biss oġġetti (pereżempju, il-veduti m'għandhomx għalfejn jintgħażlu). Għandhom jintgħażlu għażliet addizzjonali "Ħalli l-inserzjoni fil-kolonni tal-identità", jekk dawn jintużaw.
    Twissija: jekk tipprova tagħżel diversi tabelli u tassenja lilhom il-proprjetà "Ħalli l-inserzjoni fil-kolonni tal-identità" il-proprjetà diġà ġiet issettjata qabel għal mill-inqas waħda mit-tabelli magħżula, id-djalogu se jindika li l-proprjetà diġà ġiet issettjata għat-tabelli kollha magħżula. Dan il-fatt jista 'jkun konfuż u jwassal għal żbalji ta' trasferiment.
  4. Ejja nibdew it-trasferiment.
  5. Ir-restawr tal-kontroll tar-restrizzjoni:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Jekk iseħħu xi żbalji, aħna niċċekkjaw is-settings, inħassru d-database maħluqa bl-iżbalji, nerġgħu noħolquha mill-iskrittura, nagħmlu korrezzjonijiet u nirrepetu t-trasferiment tad-data.

Konklużjoni

Dan il-kompitu huwa pjuttost rari u jqum biss minħabba l-limitazzjonijiet ta 'hawn fuq. L-aktar soluzzjoni komuni hija li taġġorna SQL Server jew tikkonnettja ma 'server remot jekk l-arkitettura tal-applikazzjoni tippermetti dan. Madankollu, ħadd ma huwa sigur mill-kodiċi wirt u l-idejn mgħawweġ ta 'żvilupp ta' kwalità fqira. Nittama li ma jkollokx bżonn dawn l-istruzzjonijiet, u jekk għandek bżonnhom, jgħinuk tiffranka ħafna ħin u nervi. Grazzi tal-attenzjoni tiegħek!

Lista tas-sorsi użati

Sors: www.habr.com