Veguheztina daneyên hilanînê ji guhertoyek nû ya MS SQL Server berbi guhertoyek kevntir

pêşdîrok

Carekê, ji bo nûvekirina xeletiyek, ji min re piştgiriyek databasa hilberînê hewce bû.

Bi şaşwaziya min, ez bi sînorên jêrîn re rû bi rû bûm:

  1. Piştgiriya databasê li ser guhertoyê hate çêkirin SQL Server 2016 û bi ya min re ne lihevhatî bû SQL Server 2014.
  2. Li ser komputera karê min OS hebû Windows 7ji ber vê yekê min nekarî nûve bikim SQL Server heta guhertoya 2016
  3. Hilbera destekkirî beşek ji pergalek mezin bû ku bi mîmariya mîrasê ya hişk ve girêdayî bû û di heman demê de gihîştî hilber û bingehên din jî, ji ber vê yekê ew dikare demek pir dirêj bigire ku li stasyonek din were bicîh kirin.

Li ser van tiştên jorîn, ez gihîştim wê encamê ku dem hatiye ku çareyên ne-standard werin avêtin.

Vegerandina daneyan ji hilanînê

Min biryar da ku makîneyek virtual bikar bînim Oracle VM VirtualBox bi Windows 10 (hûn dikarin ji bo geroka Edge wêneyek ceribandinê bigirin ji vir). SQL Server 2016 li ser makîneya virtual hate saz kirin û databasa serîlêdanê ji hilanînê hate vegerandin (destûra).

Sazkirina gihîştina SQL Server-ê li ser makîneyek virtual

Dûv re, pêdivî bû ku hin gavan bavêjin da ku meriv ji derve ve bigihîje SQL Server:

  1. Ji bo dîwarê agir, qaîdeyek zêde bikin da ku destûrê bidin daxwazên portê derbas bibin 1433.
  2. Tête pêşniyar kirin ku gihîştina serverê ne bi verastkirina Windows-ê, lê bi navgîniya SQL-ê ve têketinek û şîfreyek bikar tîne (veavakirina gihîştinê hêsantir e). Lêbelê, di vê rewşê de, divê hûn ji bîr mekin ku hûn erêkirina SQL di taybetmendiyên SQL Server de çalak bikin.
  3. Di mîhengên bikarhêner de li ser SQL Server li ser tabê Nexşeya Bikarhêner rola bikarhêner ji bo databasa hatî vegerandin diyar bike db_securityadmin.

Veguheztina daneyan

Bi rastî, veguhastina daneyê bixwe ji du qonaxan pêk tê:

  1. Veguheztina şemaya daneyê (tablo, dîtin, prosedurên hilanîn, hwd.)
  2. Veguheztina daneyan bixwe

Veguheztina Schema Data

Em operasyonên jêrîn pêk tînin:

  1. Em hilbijêre Kar -> Skrîptan biafirînin ji bo bingehek portable.
  2. Tiştên ku hûn hewce ne ku veguhezînin an nirxa xwerû bihêlin hilbijêrin (di vê rewşê de dê ji bo hemî tiştên databasê nivîs werin afirandin).
  3. Mîhengên ji bo tomarkirina skrîptê diyar bikin. Awayê herî hêsan ev e ku meriv skrîptê di yek pelê de di şîfrekirina Unicode de hilîne. Dûv re, heke têkçûnek hebe, hûn ê hewce nebin ku hemî gavan dîsa dubare bikin.

Dema ku skrîpt tê hilanîn, ew dikare li ser çavkaniya SQL Server (guhertoya kevn) were darve kirin da ku databasa pêdivî biafirîne.

Şaş Piştî darvekirina skrîptê, hûn hewce ne ku lihevhatina mîhengên databasê ji hilanînê û databasa ku ji hêla skrîptê ve hatî afirandin kontrol bikin. Di doza min de, senaryoyê ji bo COLLATE mîhengek tune bû, ku bû sedema têkçûnek dema veguheztina daneyan û danskirina bi tembûrê re da ku databasê bi karanîna skrîpta zêdekirî ji nû ve biafirîne.

Veguheztina daneyan

Berî veguheztina daneyan, divê hûn kontrolkirina hemî qedexeyên li ser databasê neçalak bikin:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Veguheztina daneyan bi karanîna Wizard Import Data pêk tê Tasks -> Daneyên Import li ser SQL Server, ku databasa ku ji hêla skrîptê ve hatî çêkirin tê de ye:

  1. Mîhengên pêwendiyê bi çavkaniyê re diyar bikin (SQL Server 2016 li ser makîneyek virtual). Min Çavkaniya Daneyê bikar anî SQL Server Native Client û pejirandina SQL ya jorîn.
  2. Em mîhengên pêwendiyê bi mebestê re diyar dikin (SQL Server 2014 li ser makîneya mêvandar).
  3. Piştre me nexşeyê saz kir. Divê hûn hemî hilbijêrin ne tenê xwendin hêmanan (mînak, dîtin ne hewce ne ku bêne hilbijartin). Vebijêrkên pêvek divê bêne hilbijartin "Destûrê bide ketina nav stûnên nasnameyê", heke weha têne bikar anîn.
    Şaş heke hûn hewl bidin ku çend tabloyan hilbijêrin û wan taybetmendiyê destnîşan bikin "Destûrê bide ketina nav stûnên nasnameyê" taybetmendî jixwe ji bo herî kêm yek ji tabloyên hilbijartî berê hatiye danîn, diyalogê dê nîşan bide ku taybetmendî ji bo hemî tabloyên hilbijartî berê hatîye danîn. Ev rastî dikare tevlihev be û bibe sedema xeletiyên veguheztinê.
  4. Werin em dest bi veguheztinê bikin.
  5. Vegerandina kontrolkirina astengiyê:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Ger xeletiyek çêbibe, em mîhengan kontrol dikin, databasa ku bi xeletiyan hatî çêkirin jêbirin, wê ji nivîsê ji nû ve diafirînin, sererastkirinê dikin û veguheztina daneyê dubare dikin.

encamê

Ev kar pir kêm e û tenê ji ber sînorên jorîn çêdibe. Çareseriya herî gelemperî nûvekirina SQL Server an girêdana serverek dûr e heke mîmariya serîlêdanê destûrê bide. Lêbelê, kes ji koda mîras û destên xelet ên pêşkeftina belengaz ne ewle ye. Ez hêvî dikim ku hûn ê hewce nebin van rêwerzan, û heke hûn hewce nebin, ew ê ji we re bibin alîkar ku hûn gelek dem û nervan biparêzin. Spas ji bo baldariya we!

Lîsteya çavkaniyên bikaranîn

Source: www.habr.com