ProHoster > blog > Gweinyddiaeth > Trosglwyddo data wrth gefn o fersiwn newydd o MS SQL Server i fersiwn hŷn
Trosglwyddo data wrth gefn o fersiwn newydd o MS SQL Server i fersiwn hŷn
cynhanes
Unwaith, i atgynhyrchu byg, roeddwn angen copi wrth gefn o'r gronfa ddata cynhyrchu.
Er mawr syndod i mi, rhedais i'r cyfyngiadau canlynol:
Gwnaed copi wrth gefn o'r gronfa ddata ar y fersiwn SQL Server 2016 ac nid oedd yn gydnaws â fy SQL Server 2014.
Ar fy nghyfrifiadur gwaith, yr OS a ddefnyddiwyd oedd Ffenestri 7felly ni allwn ddiweddaru SQL Gweinyddwr hyd at fersiwn 2016
Roedd y cynnyrch â chymorth yn rhan o system fwy gyda phensaernïaeth etifeddiaeth wedi'i chyplysu'n dynn ac roedd hefyd yn cyrchu cynhyrchion a seiliau eraill, felly gallai gymryd amser hir iawn i'w ddefnyddio i orsaf arall.
O ystyried yr uchod, deuthum i'r casgliad bod yr amser wedi dod i faglau atebion ansafonol.
Adfer data o gopi wrth gefn
Dewisais ddefnyddio peiriant rhithwir Oracle VM VirtualBox gyda Windows 10 (gallwch gymryd delwedd prawf ar gyfer y porwr Edge felly). Gosodwyd SQL Server 2016 ar y peiriant rhithwir ac adferwyd cronfa ddata'r rhaglen o gopi wrth gefn (cyfarwyddyd).
Ffurfweddu mynediad i SQL Server ar beiriant rhithwir
Nesaf, roedd angen cymryd rhai camau i allu cyrchu SQL Server o'r tu allan:
Ar gyfer y wal dân, ychwanegwch reol i ganiatáu i geisiadau porthladd basio 1433.
Mae'n ddoeth nad yw mynediad i'r gweinydd yn digwydd trwy ddilysu Windows, ond trwy SQL gan ddefnyddio mewngofnodi a chyfrinair (mae'n haws ffurfweddu mynediad). Fodd bynnag, yn yr achos hwn, rhaid i chi gofio galluogi dilysiad SQL yn eiddo SQL Server.
Yn y gosodiadau defnyddiwr ar SQL Server ar y tab Mapio Defnyddwyr nodi rôl y defnyddiwr ar gyfer y gronfa ddata wedi'i hadfer db_securityadmin.
Trosglwyddo data
Mewn gwirionedd, mae'r trosglwyddiad data ei hun yn cynnwys dau gam:
Trosglwyddo sgema data (tablau, golygfeydd, gweithdrefnau wedi'u storio, ac ati)
Trosglwyddo'r data ei hun
Trosglwyddo sgema data
Rydym yn cyflawni'r gweithrediadau canlynol:
dewiswch Tasgau -> Cynhyrchu Sgriptiau ar gyfer sylfaen symudol.
Dewiswch y gwrthrychau y mae angen i chi eu trosglwyddo neu gadewch y gwerth rhagosodedig (yn yr achos hwn, bydd sgriptiau'n cael eu creu ar gyfer holl wrthrychau'r gronfa ddata).
Nodwch y gosodiadau ar gyfer cadw'r sgript. Mae'n fwyaf cyfleus cadw'r sgript mewn un ffeil Unicode. Yna, rhag ofn y bydd methiant, nid oes angen i chi ailadrodd yr holl gamau eto.
Unwaith y bydd y sgript wedi'i gadw, gellir ei weithredu ar y ffynhonnell SQL Server (hen fersiwn) i greu'r gronfa ddata ofynnol.
Rhybudd: Ar ôl gweithredu'r sgript, mae angen i chi wirio cysondeb gosodiadau'r gronfa ddata o'r copi wrth gefn a'r gronfa ddata a grëwyd gan y sgript. Yn fy achos i, nid oedd gan y sgript osodiad ar gyfer COLLATE, a arweiniodd at fethiant wrth drosglwyddo data a dawnsio gyda thambwrîn i ail-greu'r gronfa ddata gan ddefnyddio'r sgript estynedig.
Trosglwyddo data
Cyn trosglwyddo data, rhaid i chi analluogi gwirio'r holl gyfyngiadau ar y gronfa ddata:
Mae trosglwyddo data yn cael ei wneud gan ddefnyddio'r dewin mewnforio data Tasgau -> Mewnforio Data ar SQL Server, lle mae'r gronfa ddata a grëwyd gan y sgript wedi'i lleoli:
Nodwch y gosodiadau cysylltiad â'r ffynhonnell (SQL Server 2016 ar beiriant rhithwir). Defnyddiais ffynhonnell data Cleient Brodorol Gweinydd SQL a'r dilysiad SQL a grybwyllwyd uchod.
Rydym yn nodi'r gosodiadau cysylltiad â'r cyrchfan (SQL Server 2014 ar y peiriant gwesteiwr).
Nesaf rydym yn gosod y mapio. Rhaid dewis pob un nid darllen yn unig gwrthrychau (er enghraifft, nid oes angen dewis golygfeydd). Fel opsiynau ychwanegol, dewiswch "Caniatáu mewnosod mewn colofnau hunaniaeth"os defnyddir y cyfryw. Rhybudd: os ceisiwch ddewis sawl tabl a aseinio'r eiddo iddynt "Caniatáu mewnosod mewn colofnau hunaniaeth" mae'r eiddo eisoes wedi'i osod ar gyfer o leiaf un o'r tablau a ddewiswyd, bydd yr ymgom yn nodi bod yr eiddo eisoes wedi'i osod ar gyfer yr holl dablau a ddewiswyd. Gall y ffaith hon fod yn ddryslyd ac arwain at wallau mudo.
Os bydd unrhyw wallau yn digwydd, rydym yn gwirio'r gosodiadau, yn dileu'r gronfa ddata a grëwyd gyda gwallau, yn ei hail-greu o'r sgript, yn gwneud cywiriadau ac yn ailadrodd y trosglwyddiad data.
Casgliad
Mae'r dasg hon yn eithaf prin ac yn digwydd dim ond oherwydd y cyfyngiadau uchod. Yr ateb mwyaf cyffredin yw uwchraddio SQL Server neu gysylltu â gweinydd pell os yw pensaernïaeth y rhaglen yn caniatáu hynny. Fodd bynnag, nid oes unrhyw un yn imiwn rhag y cod etifeddiaeth a dwylo cam datblygiad o ansawdd gwael. Gobeithiaf na fydd angen y cyfarwyddiadau hyn arnoch, ac os oes eu hangen arnoch, byddant yn eich helpu i arbed llawer o amser a nerfau. Diolch am eich sylw!