Pagbalhin sa backup data gikan sa bag-ong bersyon sa MS SQL Server ngadto sa mas daan nga bersyon

sa naunang kasaysayan

Kas-a, aron makopya ang usa ka bug, kinahanglan nako ang backup sa database sa produksiyon.

Sa akong katingala, nakasugat ko sa mosunod nga mga limitasyon:

  1. Ang database backup gihimo sa bersyon SQL Server 2016 ug dili compatible sa akong SQL Server 2014.
  2. Sa akong work computer, ang OS nga gigamit kay Windows 7kaya nga di ako makapag update SQL Server hangtod sa bersyon 2016
  3. Ang gisuportahan nga produkto bahin sa usa ka mas dako nga sistema nga adunay hugot nga pagkadugtong nga arkitektura nga kabilin ug nakigsulti usab sa ubang mga produkto ug base, aron mahimo’g magdugay ang pag-deploy niini sa lain nga istasyon.

Gihatag sa ibabaw, nakahinapos ako nga ang panahon miabot na alang sa mga crutches sa dili standard nga mga solusyon.

Pag-uli sa datos gikan sa usa ka backup

Gipili nako ang paggamit sa usa ka virtual nga makina Oracle VM VirtualBox uban sa Windows 10 (mahimo kang magkuha og test image para sa Edge browser gikan dinhi). Ang SQL Server 2016 gi-install sa virtual machine ug ang database sa aplikasyon gipahiuli gikan sa backup (manwal).

Pag-configure sa pag-access sa SQL Server sa usa ka virtual nga makina

Sunod, gikinahanglan ang paghimo sa pipila ka mga lakang aron ma-access ang SQL Server gikan sa gawas:

  1. Alang sa firewall, pagdugang usa ka lagda aron laktawan ang mga hangyo sa pantalan 1433.
  2. Gitinguha nga ang pag-access sa server dili moagi sa windows authentication, apan pinaagi sa SQL gamit ang login ug password (mas dali ang pag-set up sa pag-access). Bisan pa, sa kini nga kaso, kinahanglan nimong hinumdoman nga mahimo ang SQL Authentication sa mga kabtangan sa SQL Server.
  3. Sa mga setting sa user sa SQL Server sa tab Pagmapa sa Gumagamit ipiho ang papel sa user alang sa gipahiuli nga database db_securityadmin.

Pagbalhin sa datos

Sa tinuud, ang pagbalhin sa datos mismo naglangkob sa duha ka yugto:

  1. Pagbalhin sa eskema sa datos (mga lamesa, mga panglantaw, gitipigan nga mga pamaagi, ug uban pa)
  2. Pagbalhin sa datos mismo

Pagbalhin sa eskema sa datos

Gihimo namo ang mosunod nga mga operasyon:

  1. Pagpili Mga Buluhaton -> Paghimo og mga Script alang sa usa ka portable base.
  2. Pilia ang mga butang nga kinahanglan nimong ibalhin o ibilin ang default nga kantidad (sa kini nga kaso, ang mga script himuon alang sa tanan nga mga butang sa database).
  3. Ipiho ang mga setting alang sa pagtipig sa script. Labing sayon ​​​​ang pagtipig sa script sa usa ka Unicode file. Unya, sa kaso sa kapakyasan, dili na kinahanglan nga balikon ang tanan nga mga lakang pag-usab.

Sa higayon nga ang script maluwas, kini mahimong modagan sa orihinal nga SQL Server (daan nga bersyon) sa paghimo sa gikinahanglan nga base.

Pasidaan: Human sa pagpatuman sa script, kinahanglan nimo nga susihon ang mga sulat tali sa mga setting sa database gikan sa backup ug sa database nga gihimo sa script. Sa akong kaso, wala'y setting alang sa COLLATE sa script, nga misangpot sa pagkapakyas sa pagbalhin sa datos ug pagsayaw gamit ang tamburin aron sa paghimo pag-usab sa database gamit ang gidugang nga script.

Pagbalhin sa datos

Sa dili pa ibalhin ang datos, kinahanglan nimong i-disable ang pagsusi sa tanan nga mga pagdili sa database:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Ang pagbalhin sa datos gihimo gamit ang data import wizard Mga Buluhaton -> Pag-import sa Data sa SQL Server, diin ang database nga gihimo sa script nahimutang:

  1. Ipiho ang mga setting sa koneksyon sa gigikanan (SQL Server 2016 sa usa ka virtual machine). Gigamit nako ang tinubdan sa datos SQL Server Native Client ug ang nahisgutang SQL authentication.
  2. Ipiho ang mga setting sa koneksyon alang sa destinasyon (SQL Server 2014 sa host machine).
  3. Sunod, i-set up ang mapping. Kinahanglang pilion ang tanan dili read-only mga butang (pananglitan, ang mga pagtan-aw dili kinahanglan nga pilion). Isip dugang nga mga kapilian, pilia "Tugoti ang pagsal-ot sa mga kolum sa identidad"kung ang ingon gigamit.
    Pasidaan: kung, sa pagsulay sa pagpili sa daghang mga lamesa ug ibutang ang ilang kabtangan "Tugoti ang pagsal-ot sa mga kolum sa identidad" ang kabtangan gitakda na alang sa labing menos usa sa mga pinili nga mga lamesa, ang dialogo magpakita nga ang kabtangan gibutang na alang sa tanan nga pinili nga mga lamesa. Kini nga kamatuoran mahimong makalibog ug mosangpot sa mga sayop sa paglalin.
  4. Nagsugod kami sa pagbalhin.
  5. Pag-uli sa pagpugong sa pagsusi:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Kung adunay mga sayup nga mahitabo, among susihon ang mga setting, tangtangon ang database nga gihimo nga adunay mga sayup, buhata kini pag-usab gikan sa script, paghimo mga pagtul-id ug balik-balik ang pagbalhin sa datos.

konklusyon

Kini nga buluhaton talagsaon ug mahitabo lamang tungod sa mga limitasyon sa ibabaw. Ang labing kasagaran nga solusyon mao ang pag-upgrade sa SQL Server o pagkonektar sa usa ka hilit nga server kung gitugotan kini sa arkitektura sa aplikasyon. Bisan pa, walay usa nga dili makalikay sa legacy code ug hiwi nga mga kamot sa dili maayo nga kalidad nga pag-uswag. Nanghinaut ko nga dili nimo kinahanglan kini nga panudlo, apan kung kinahanglan nimo kini, makatabang kini nga makatipig daghang oras ug nerbiyos. Salamat sa imong pagtagad!

Listahan sa mga tinubdan nga gigamit

Source: www.habr.com