Inahamisha data ya chelezo kutoka kwa toleo jipya la Seva ya MS SQL hadi toleo la zamani

kabla ya historia

Mara moja, ili kuzalisha mdudu, nilihitaji chelezo ya hifadhidata ya uzalishaji.

Kwa mshangao wangu, nilikutana na mapungufu yafuatayo:

  1. Hifadhi ya hifadhidata ilifanywa kwenye toleo SQL Server 2016 na haikuwa sambamba na yangu SQL Server 2014.
  2. Kwenye kompyuta yangu ya kazi, OS iliyotumiwa ilikuwa Windows 7kwa hivyo sikuweza kusasisha SQL Server hadi toleo la 2016
  3. Bidhaa inayotumika ilikuwa sehemu ya mfumo mkubwa na usanifu wa urithi uliounganishwa kwa karibu na pia ilizungumza na bidhaa na besi zingine, kwa hivyo inaweza kuchukua muda mrefu kuipeleka kwenye kituo kingine.

Kwa kuzingatia hapo juu, nilifikia hitimisho kwamba wakati umefika wa magongo ya suluhisho zisizo za kawaida.

Kurejesha data kutoka kwa chelezo

Nilichagua kutumia mashine ya kawaida Oracle VM VirtualBox na Windows 10 (unaweza kuchukua picha ya jaribio kwa kivinjari cha Edge hivyo) SQL Server 2016 ilisakinishwa kwenye mashine ya kawaida na hifadhidata ya programu ilirejeshwa kutoka kwa chelezo (maelekezo).

Inasanidi ufikiaji wa Seva ya SQL kwenye mashine pepe

Ifuatayo, ilihitajika kuchukua hatua kadhaa ili kuweza kufikia Seva ya SQL kutoka nje:

  1. Kwa ngome, ongeza sheria ya kuruka maombi ya mlango 1433.
  2. Inastahili kuwa ufikiaji wa seva haupiti uthibitishaji wa windows, lakini kupitia SQL kwa kutumia kuingia na nywila (ni rahisi kuweka ufikiaji). Walakini, katika kesi hii, unahitaji kukumbuka kuwezesha Uthibitishaji wa SQL katika sifa za Seva ya SQL.
  3. Katika mipangilio ya watumiaji kwenye Seva ya SQL kwenye kichupo Ramani ya Mtumiaji taja jukumu la mtumiaji kwa hifadhidata iliyorejeshwa db_securityadmin.

Uhamisho wa data

Kwa kweli, uhamishaji wa data yenyewe una hatua mbili:

  1. Uhamishaji wa taratibu za data (meza, maoni, taratibu zilizohifadhiwa, n.k.)
  2. Kuhamisha data yenyewe

Uhamisho wa schema ya data

Tunafanya shughuli zifuatazo:

  1. Kuchagua Kazi -> Tengeneza Hati kwa msingi wa kubebeka.
  2. Chagua vitu unavyohitaji kuhamisha au kuacha thamani ya chaguo-msingi (katika kesi hii, hati zitaundwa kwa vitu vyote vya hifadhidata).
  3. Bainisha mipangilio ya kuhifadhi hati. Ni rahisi zaidi kuhifadhi hati katika faili moja ya Unicode. Kisha, katika kesi ya kushindwa, huna haja ya kurudia hatua zote tena.

Mara tu hati inapohifadhiwa, inaweza kuendeshwa kwenye Seva ya asili ya SQL (toleo la zamani) ili kuunda msingi unaohitajika.

Onyo: Baada ya kutekeleza hati, unahitaji kuangalia mawasiliano kati ya mipangilio ya hifadhidata kutoka kwa chelezo na hifadhidata iliyoundwa na hati. Kwa upande wangu, hakukuwa na mpangilio wa COLLATE kwenye hati, ambayo ilisababisha kutofaulu wakati wa kuhamisha data na kucheza na tambourini kuunda tena hifadhidata kwa kutumia hati iliyoongezwa.

Uhamisho wa data

Kabla ya kuhamisha data, lazima uzima ukaguzi wa vizuizi vyote kwenye hifadhidata:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Uhamisho wa data unafanywa kwa kutumia mchawi wa kuingiza data Kazi -> Leta Data kwenye Seva ya SQL, ambapo hifadhidata iliyoundwa na hati iko:

  1. Taja mipangilio ya uunganisho kwenye chanzo (SQL Server 2016 kwenye mashine ya kawaida). Nilitumia chanzo cha data Mteja Asilia wa Seva ya SQL na uthibitishaji wa SQL uliotajwa hapo juu.
  2. Bainisha mipangilio ya muunganisho wa lengwa (SQL Server 2014 kwenye mashine ya kupangisha).
  3. Ifuatayo, weka ramani. Wote lazima wachaguliwe sio kusoma tu vitu (kwa mfano, maoni hayahitaji kuchaguliwa). Kama chaguzi za ziada, chagua "Ruhusu kuingizwa kwenye safu wima za utambulisho"kama hizo zinatumika.
    Onyo: ikiwa, wakati wa kujaribu kuchagua meza kadhaa na kuweka mali zao "Ruhusu kuingizwa kwenye safu wima za utambulisho" mali tayari imewekwa kwa angalau moja ya meza zilizochaguliwa, mazungumzo yataonyesha kuwa mali tayari imewekwa kwa meza zote zilizochaguliwa. Ukweli huu unaweza kuchanganya na kusababisha makosa ya uhamiaji.
  4. Tunaanza uhamisho.
  5. Kurejesha ukaguzi wa kizuizi:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Ikiwa makosa yoyote yanatokea, tunaangalia mipangilio, kufuta hifadhidata iliyoundwa na makosa, kuunda tena kutoka kwa hati, fanya marekebisho na kurudia uhamishaji wa data.

Hitimisho

Kazi hii ni nadra kabisa na hutokea tu kwa sababu ya mapungufu hapo juu. Suluhisho la kawaida ni kuboresha Seva ya SQL au kuunganisha kwa seva ya mbali ikiwa usanifu wa programu inaruhusu. Walakini, hakuna mtu aliye salama kutokana na msimbo wa urithi na mikono iliyopotoka ya maendeleo duni. Natumaini kwamba hutahitaji maelekezo haya, lakini ikiwa bado unahitaji, itasaidia kuokoa muda mwingi na mishipa. Asante kwa umakini wako!

Orodha ya vyanzo vilivyotumika

Chanzo: mapenzi.com