Flutningur öryggisafritsgagna úr nýrri útgáfu af MS SQL Server yfir í eldri útgáfu

Forsaga

Einu sinni, til þess að endurskapa villu, þurfti ég öryggisafrit af framleiðslugagnagrunninum.

Mér til undrunar lenti ég í eftirfarandi takmörkunum:

  1. Gagnaafritið var gert á útgáfunni SQL Server 2016 og var ekki samhæft við mitt SQL Server 2014.
  2. Á vinnutölvunni minni var stýrikerfið sem notað var Windows 7svo ég gat ekki uppfært SQL Server upp í útgáfu 2016
  3. Varan sem studd var var hluti af stærra kerfi með þétttengdum eldri arkitektúr og talaði einnig við aðrar vörur og bækistöðvar, svo það gæti tekið mjög langan tíma að dreifa henni á aðra stöð.

Í ljósi ofangreinds komst ég að þeirri niðurstöðu að tími sé kominn á hækjur óstaðlaðra lausna.

Endurheimt gögn úr öryggisafriti

Ég valdi að nota sýndarvél Oracle VM VirtualBox með Windows 10 (þú getur tekið prófunarmynd fyrir Edge vafrann þess vegna). SQL Server 2016 var settur upp á sýndarvélinni og forritagagnagrunnurinn var endurheimtur úr öryggisafritinu (kennsla).

Að stilla aðgang að SQL Server á sýndarvél

Næst var nauðsynlegt að gera nokkrar ráðstafanir til að geta fengið aðgang að SQL Server utan frá:

  1. Fyrir eldvegginn, bættu við reglu um að sleppa beiðnum um höfnina 1433.
  2. Æskilegt er að aðgangur að þjóninum fari ekki í gegnum Windows auðkenningu, heldur í gegnum SQL með notandanafni og lykilorði (það er auðveldara að setja upp aðgang). Hins vegar, í þessu tilfelli, þarftu að muna að virkja SQL auðkenningu í eiginleikum SQL Server.
  3. Í notendastillingum á SQL Server á flipanum Notendakortlagning tilgreindu notendahlutverkið fyrir endurheimta gagnagrunninn db_securityadmin.

Gagnaflutningur

Reyndar samanstendur gagnaflutningurinn sjálfur af tveimur stigum:

  1. Gagnaskemuflutningur (töflur, skoðanir, vistaðar aðferðir osfrv.)
  2. Að flytja gögnin sjálf

Gagnaskemuflutningur

Við framkvæmum eftirfarandi aðgerðir:

  1. Veldu Verkefni -> Búa til forskriftir fyrir færanlegan grunn.
  2. Veldu hlutina sem þú þarft að flytja eða skildu eftir sjálfgefið gildi (í þessu tilviki verða forskriftir búnar til fyrir alla gagnagrunnshluti).
  3. Tilgreindu stillingar til að vista handritið. Það er þægilegast að vista handritið í einni Unicode skrá. Síðan, ef bilun er, þarftu ekki að endurtaka öll skrefin aftur.

Þegar handritið hefur verið vistað er hægt að keyra það á upprunalega SQL Server (gamla útgáfan) til að búa til nauðsynlegan grunn.

Viðvörun: Eftir að hafa keyrt skriftuna þarftu að athuga samsvörun milli stillinga gagnagrunnsins úr öryggisafritinu og gagnagrunnsins sem skriftin býr til. Í mínu tilviki var engin stilling fyrir COLLATE í handritinu, sem leiddi til bilunar þegar gögn voru flutt og dansað með tambúrínu til að endurskapa gagnagrunninn með því að nota viðbótarforritið.

Gagnaflutningur

Áður en gögn eru flutt verður þú að slökkva á athugun á öllum takmörkunum á gagnagrunninum:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Gagnaflutningur fer fram með því að nota gagnainnflutningshjálpina Verkefni -> Flytja inn gögn á SQL Server, þar sem gagnagrunnurinn sem er búinn til með handritinu er staðsettur:

  1. Tilgreindu tengingarstillingar við upprunann (SQL Server 2016 á sýndarvél). Ég notaði gagnagjafa Native Client SQL Server og áðurnefnd SQL auðkenning.
  2. Tilgreindu tengingarstillingar fyrir áfangastað (SQL Server 2014 á hýsingarvélinni).
  3. Næst skaltu setja upp kortlagninguna. Allt verður að velja ekki skrifvarinn hluti (til dæmis þarf ekki að velja útsýni). Sem viðbótarvalkostir skaltu velja "Leyfa innsetningu í auðkennisdálka"ef slíkt er notað.
    Viðvörun: ef, þegar reynt er að velja nokkrar töflur og stilla eign þeirra "Leyfa innsetningu í auðkennisdálka" Eiginleikinn hefur þegar verið stilltur fyrir að minnsta kosti eina af völdum töflum, svarglugginn gefur til kynna að eignin hafi þegar verið stillt fyrir allar valdar töflur. Þessi staðreynd getur verið ruglingsleg og leitt til flutningsvillna.
  4. Við hefjum flutninginn.
  5. Endurheimtir þvingunarathugun:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Ef einhverjar villur koma upp, athugum við stillingarnar, eyðum gagnagrunninum sem búið er til með villum, búum til hann aftur úr handritinu, gerum leiðréttingar og endurtökum gagnaflutninginn.

Ályktun

Þetta verkefni er frekar sjaldgæft og gerist aðeins vegna ofangreindra takmarkana. Algengasta lausnin er að uppfæra SQL Server eða tengjast ytri netþjóni ef forritaarkitektúrinn leyfir það. Hins vegar er enginn ónæmur fyrir arfleifð kóða og krókóttar hendur lélegrar þróunar. Ég vona að þú þurfir ekki þessa kennslu, en ef þú þarft hana samt mun það spara mikinn tíma og taugar. Takk fyrir athyglina!

Listi yfir heimildir sem notaðar eru

Heimild: www.habr.com