Die oordrag van rugsteundata van 'n nuwe weergawe van MS SQL Server na 'n ouer weergawe

voorgeskiedenis

Een keer, om 'n fout te reproduseer, het ek 'n rugsteun van die produksiedatabasis nodig gehad.

Tot my verbasing het ek die volgende beperkings teëgekom:

  1. Die databasisrugsteun is op die weergawe gemaak SQL Server 2016 en was nie versoenbaar met myne nie SQL Server 2014.
  2. Op my werksrekenaar was die OS Windows 7so ek kon nie opdateer nie SQL Server tot weergawe 2016
  3. Die ondersteunde produk was deel van 'n groter stelsel met 'n stewig gekoppelde erfenisargitektuur en het ook toegang tot ander produkte en basisse gehad, so dit kan baie lank neem om na 'n ander stasie te ontplooi.

Met inagneming van bogenoemde, het ek tot die gevolgtrekking gekom dat die tyd aangebreek het vir die krukkelys van nie-standaard oplossings.

Herstel data vanaf rugsteun

Ek het besluit om 'n virtuele masjien te gebruik Oracle VM VirtualBox met Windows 10 (jy kan 'n toetsprent vir die Edge-blaaier neem vandaar). SQL Server 2016 is op die virtuele masjien geïnstalleer en die toepassingsdatabasis is vanaf 'n rugsteun herstel (opdrag).

Die opstel van toegang tot SQL Server op 'n virtuele masjien

Vervolgens was dit nodig om 'n paar stappe te neem om dit moontlik te maak om toegang tot SQL Server van buite af te verkry:

  1. Vir die firewall, voeg 'n reël by om poortversoeke te laat slaag 1433.
  2. Dit is raadsaam dat toegang tot die bediener nie deur Windows-verifikasie plaasvind nie, maar deur SQL met 'n aanmelding en wagwoord (dit is makliker om toegang op te stel). In hierdie geval moet u egter onthou om SQL-verifikasie in die SQL Server-eienskappe te aktiveer.
  3. In die gebruikersinstellings op SQL Server op die blad Gebruikers kartering spesifiseer die gebruikerrol vir die herstelde databasis db_sekuriteitadmin.

Data -oordrag

Eintlik bestaan ​​die data-oordrag self uit twee fases:

  1. Die oordrag van dataskema (tabelle, aansigte, gestoorde prosedures, ens.)
  2. Die oordrag van die data self

Dataskema-oordrag

Ons voer die volgende operasies uit:

  1. Kies Take -> Genereer skrifte vir 'n draagbare basis.
  2. Kies die voorwerpe wat jy moet oordra of laat die verstekwaarde (in hierdie geval sal skrifte vir alle databasisobjekte geskep word).
  3. Spesifiseer instellings vir die stoor van die skrip. Die gerieflikste manier is om die skrif in 'n enkele lêer in Unicode-kodering te stoor. Dan, as daar 'n mislukking is, hoef jy nie al die stappe weer te herhaal nie.

Sodra die skrip gestoor is, kan dit op die bron SQL Server (ou weergawe) uitgevoer word om die vereiste databasis te skep.

waarskuwing: Nadat u die skrip uitgevoer het, moet u die konsekwentheid van die databasisinstellings vanaf die rugsteun en die databasis wat deur die skrip geskep is, nagaan. In my geval het die skrif nie 'n instelling vir COLLATE gehad nie, wat gelei het tot 'n mislukking tydens die oordrag van data en dans met 'n tamboeryn om die databasis te herskep met behulp van die vermeerderde skrif.

Data -oordrag

Voordat u data oordra, moet u die kontrolering van alle beperkings op die databasis deaktiveer:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Data-oordrag word uitgevoer met behulp van die Data Import Wizard Take -> Voer data in op SQL Server, waar die databasis wat deur die skrip geskep is geleë is:

  1. Spesifiseer die verbindinginstellings na die bron (SQL Server 2016 op 'n virtuele masjien). Ek het Data Source gebruik Inheemse kliënt van SQL Server en die bogenoemde SQL-verifikasie.
  2. Ons spesifiseer die verbindinginstellings na die bestemming (SQL Server 2014 op die gasheermasjien).
  3. Volgende stel ons die kartering op. Jy moet alles kies nie leesalleen nie voorwerpe (byvoorbeeld, aansigte hoef nie gekies te word nie). Bykomende opsies moet gekies word "Laat invoeging in identiteitskolomme toe", indien dit gebruik word.
    waarskuwing: as jy verskeie tabelle probeer kies en die eiendom aan hulle toewys "Laat invoeging in identiteitskolomme toe" die eienskap is reeds voorheen gestel vir ten minste een van die geselekteerde tabelle, die dialoog sal aandui dat die eienskap reeds gestel is vir alle geselekteerde tabelle. Hierdie feit kan verwarrend wees en lei tot oordragfoute.
  4. Kom ons begin die oordrag.
  5. Herstel van die beperkingskontrole:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

As enige foute voorkom, gaan ons die instellings na, vee die databasis uit wat met foute geskep is, herskep dit vanaf die skrif, maak regstellings en herhaal die data-oordrag.

Gevolgtrekking

Hierdie taak is redelik skaars en ontstaan ​​slegs as gevolg van bogenoemde beperkings. Die mees algemene oplossing is om SQL Server op te gradeer of aan 'n afgeleë bediener te koppel as die toepassingsargitektuur dit toelaat. Niemand is egter veilig teen nalatenskapkode en die krom hande van swak gehalte ontwikkeling nie. Ek hoop dat jy nie hierdie instruksies nodig sal hê nie, en as jy dit wel nodig het, sal dit jou help om baie tyd en senuwees te bespaar. Dankie vir jou aandag!

Lys van bronne wat gebruik is

Bron: will.com