Transfere done backup soti nan yon nouvo vèsyon MS SQL sèvè nan yon vèsyon ki pi gran

pre-istwa

Yon fwa, pou repwodui yon ensèk, mwen te bezwen yon backup nan baz done pwodiksyon an.

Nan sipriz mwen, mwen te rankontre limit sa yo:

  1. Sovgad baz done a te fèt sou vèsyon an SQL sèvè 2016 epi li pa t konpatib ak mwen an SQL sèvè 2014.
  2. Sou òdinatè travay mwen eksplwatasyon an te Fenèt 7Se konsa, mwen pa t 'kapab mete ajou SQL sèvè jiska vèsyon 2016
  3. Pwodui sipòte a te fè pati yon pi gwo sistèm ak yon achitekti eritaj byen makonnen epi tou li te jwenn aksè nan lòt pwodwi ak baz, kidonk li te kapab pran anpil tan pou deplwaye nan yon lòt estasyon.

Lè ou konsidere pi wo a, mwen te rive nan konklizyon an ke lè a rive pou beki yo nan solisyon ki pa estanda.

Restore done ki soti nan backup

Mwen deside sèvi ak yon machin vityèl Oracle VM VirtualBox ak Windows 10 (ou ka pran yon imaj tès pou navigatè Edge la kon sa). SQL Server 2016 te enstale sou machin vityèl la epi baz done aplikasyon an te retabli nan yon backup (enstriksyon).

Mete kanpe aksè a sèvè SQL sou yon machin vityèl

Apre sa, li te nesesè yo pran kèk etap pou fè li posib jwenn aksè nan SQL sèvè soti nan deyò a:

  1. Pou firewall la, ajoute yon règ pou pèmèt demann pò yo pase 1433.
  2. Li rekòmande ke aksè nan sèvè a rive pa atravè otantifikasyon Windows, men atravè SQL lè l sèvi avèk yon login ak modpas (li pi fasil pou konfigirasyon aksè). Sepandan, nan ka sa a, ou dwe sonje pou pèmèt otantifikasyon SQL nan pwopriyete SQL sèvè yo.
  3. Nan anviwònman itilizatè yo sou SQL sèvè sou tab la Kat jeyografik itilizatè presize wòl itilizatè a pou baz done retabli a db_securityadmin.

Transfè done

Aktyèlman, transfè a done tèt li konsiste de de etap:

  1. Transfere done chema (tab, opinyon, pwosedi ki estoke, elatriye)
  2. Transfere done nan tèt li

Transfè Schema Done

Nou fè operasyon sa yo:

  1. Chwazi Travay -> Jenere Scripts pou yon baz pòtab.
  2. Chwazi objè yo ou bezwen transfere oswa kite valè default la (nan ka sa a, scripts yo pral kreye pou tout objè baz done).
  3. Espesifye anviwònman pou sove script la. Fason ki pi pratik se sove script la nan yon sèl fichye nan kodaj Unicode. Lè sa a, si gen yon echèk, ou pa pral bezwen repete tout etap yo ankò.

Yon fwa yo sove script la, li ka egzekite sou sous SQL sèvè a (ansyen vèsyon) pou kreye baz done ki nesesè yo.

Avètisman: Apre egzekite script la, ou bezwen tcheke konsistans nan paramèt baz done a soti nan backup la ak baz done a kreye pa script la. Nan ka mwen an, script la pa t 'gen yon anviwònman pou COLLATE, ki te mennen nan yon echèk lè transfere done ak danse ak yon tanbourin re-kreye baz done a lè l sèvi avèk script la ogmante.

Transfè done

Anvan ou transfere done, ou dwe enfim tcheke tout restriksyon sou baz done a:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Transfè done yo fèt lè l sèvi avèk Sòsye Import Import yo Travay -> Enpòte Done sou SQL sèvè, kote baz done a kreye pa script la sitiye:

  1. Espesifye anviwònman koneksyon ak sous la (SQL Server 2016 sou yon machin vityèl). Mwen te itilize sous done SQL sèvè natif natal kliyan ak otantifikasyon SQL mansyone pi wo a.
  2. Nou presize anviwònman koneksyon ak destinasyon an (SQL Server 2014 sou machin lame a).
  3. Apre sa, nou mete kat la. Ou dwe chwazi tout pa lekti sèlman objè (pa egzanp, opinyon pa bezwen chwazi). Opsyon adisyonèl yo ta dwe chwazi "Pèmèt ensèsyon nan kolòn idantite yo", si yo itilize sa yo.
    Avètisman: si ou eseye chwazi plizyè tab epi bay yo pwopriyete a "Pèmèt ensèsyon nan kolòn idantite yo" pwopriyete a te deja fikse pou omwen youn nan tab yo chwazi yo, dyalòg la pral endike ke pwopriyete a te deja mete pou tout tab yo chwazi yo. Reyalite sa a ka konfizyon ak mennen nan erè transfè.
  4. Ann kòmanse transfè a.
  5. Retabli chèk kontrent la:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Si nenpòt erè rive, nou tcheke paramèt yo, efase baz done a ki te kreye ak erè, re-kreye li nan script la, fè koreksyon epi repete transfè done a.

Konklizyon

Travay sa a se byen ra epi li rive sèlman akòz limit ki anwo yo. Solisyon ki pi komen an se ajou SQL sèvè oswa konekte ak yon sèvè aleka si achitekti aplikasyon an pèmèt li. Sepandan, pèsonn pa an sekirite kont eritaj kòd ak men yo kwochi nan devlopman pòv kalite. Mwen espere ke ou pa pral bezwen enstriksyon sa yo, epi si ou bezwen yo, yo pral ede ou ekonomize anpil tan ak nè. Mèsi pou atansyon ou!

Lis sous yo itilize

Sous: www.habr.com

Add nouvo kòmantè