Интиқоли маълумоти эҳтиётӣ аз версияи нави MS SQL Server ба версияи кӯҳна

prehistory

Боре, барои дубора тавлид кардани хато, ба ман нусхаи эҳтиётии пойгоҳи додаҳои истеҳсолӣ лозим буд.

Ба тааҷҷуби ман, ман бо маҳдудиятҳои зерин дучор шудам:

  1. Нусхаи эҳтиётии пойгоҳи додаҳо дар версия сохта шудааст SQL Server 2016 ва бо ман мувофиқ набуд SQL Server 2014.
  2. Дар компютери кории ман OS буд Windows 7бинобар ин ман навсозӣ карда натавонистам Сервери SQL то версияи 2016
  3. Маҳсулоти дастгиришаванда як қисми системаи калонтаре буд, ки меъмории меросии зич алоқаманд буд ва инчунин ба дигар маҳсулот ва пойгоҳҳо дастрасӣ пайдо мекард, аз ин рӯ барои ҷойгир кардани истгоҳи дигар он метавонад вақти хеле дарозро талаб кунад.

Гуфта-хои болоро ба назар гирифта, ба хулосае омадам, ки вакти асобагхои халли гайристандартй расидааст.

Барқарор кардани маълумот аз нусхабардорӣ

Ман қарор додам, ки мошини виртуалиро истифода барам Oracle VM VirtualBox бо Windows 10 (шумо метавонед тасвири санҷиширо барои браузери Edge гиред аз ин ҷо). SQL Server 2016 дар мошини виртуалӣ насб карда шуд ва пойгоҳи додаҳои барнома аз нусхабардорӣ барқарор карда шуд (дастур).

Танзими дастрасӣ ба SQL Server дар мошини виртуалӣ

Баъдан, зарур буд, ки барои дастрасии SQL Server аз берун чанд чора андешид:

  1. Барои брандмауэр қоида илова кунед, то дархостҳои портро гузаранд 1433.
  2. Тавсия дода мешавад, ки дастрасӣ ба сервер на тавассути аутентификатсияи Windows, балки тавассути SQL бо истифода аз логин ва парол (конфигуратсияи дастрасӣ осонтар аст). Аммо, дар ин ҳолат, шумо бояд дар хотир доред, ки аутентификатсияи SQL-ро дар хосиятҳои SQL Server фаъол созед.
  3. Дар танзимоти корбар дар SQL Server дар ҷадвал Харитасозии корбар нақши корбарро барои базаи барқароршуда муайян кунед db_securityadmin.

Интиқоли маълумот

Дар асл, худи интиқоли маълумот аз ду марҳила иборат аст:

  1. Интиқоли схемаи додаҳо (ҷадвалҳо, намудҳо, расмиёти захирашуда ва ғайра)
  2. Интиқоли худи маълумот

Интиқоли схемаи маълумот

Мо амалҳои зеринро иҷро мекунем:

  1. Мо интихоб мекунем Вазифаҳо -> Эҷоди скриптҳо барои пойгоҳи сайёр.
  2. Объектҳоеро, ки ба шумо интиқол додан лозим аст, интихоб кунед ё арзиши пешфарзро тарк кунед (дар ин ҳолат скриптҳо барои ҳама объектҳои пойгоҳи додаҳо сохта мешаванд).
  3. Танзимотҳоро барои захира кардани скрипт муайян кунед. Роҳи аз ҳама мувофиқ ин захира кардани скрипт дар як файл бо рамзгузории Юникод мебошад. Пас, агар нокомӣ ба амал ояд, ба шумо лозим нест, ки ҳамаи қадамҳоро такрор кунед.

Пас аз захира кардани скрипт, онро метавон дар SQL Server сарчашма (версияи кӯҳна) иҷро кард, то пойгоҳи додаи лозимиро эҷод кунад.

Огоҳӣ: Пас аз иҷрои скрипт, шумо бояд мувофиқати танзимоти пойгоҳи додаҳоро аз нусхабардорӣ ва пойгоҳи додаи скрипт тафтиш кунед. Дар ҳолати ман, скрипт танзимоти COLLATE надошт, ки ин боиси нокомӣ ҳангоми интиқоли маълумот ва бо рақс барои аз нав сохтани пойгоҳи додаҳо бо истифода аз скрипти васеъшуда гардид.

Интиқоли маълумот

Пеш аз интиқоли маълумот, шумо бояд тафтиши ҳама маҳдудиятҳоро дар пойгоҳи додаҳо хомӯш кунед:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Интиқоли маълумот бо истифода аз устоди воридоти маълумот анҷом дода мешавад Вазифаҳо -> Воридоти маълумот дар SQL Server, ки дар он пойгоҳи додаи скрипт сохта шудааст:

  1. Танзимоти пайвастшавиро ба манбаъ муайян кунед (SQL Server 2016 дар мошини виртуалӣ). Ман манбаи маълумотро истифода кардам Мизоҷи аслии SQL Server ва аутентификатсияи SQL-и дар боло зикршуда.
  2. Мо танзимоти пайвастшавӣ ба макони таъинотро муайян мекунем (SQL Server 2014 дар мошини мизбон).
  3. Минбаъд мо харитасозӣ мекунем. Шумо бояд ҳамаро интихоб кунед на танҳо барои хондан объектҳо (масалан, намоишҳоро интихоб кардан лозим нест). Вариантҳои иловагӣ бояд интихоб карда шаванд "Иҷозат додан ба ворид кардани сутунҳои шахсият", агар чунин истифода бурда шаванд.
    Огоҳӣ: агар шумо кӯшиш кунед, ки якчанд ҷадвалҳоро интихоб кунед ва моликиятро ба онҳо таъин кунед "Иҷозат додан ба ворид кардани сутунҳои шахсият" амвол аллакай барои ҳадди аққал яке аз ҷадвалҳои интихобшуда муқаррар карда шудааст, муколама нишон медиҳад, ки амвол аллакай барои ҳамаи ҷадвалҳои интихобшуда муқаррар шудааст. Ин далел метавонад печида бошад ва боиси хатогиҳои интиқол гардад.
  4. Биёед интиқолро оғоз кунем.
  5. Барқарор кардани санҷиши маҳдудият:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Агар ягон хатогӣ рух диҳад, мо танзимотро тафтиш мекунем, базаи бо хатогиҳо сохташударо нест мекунем, онро аз скрипт дубора эҷод мекунем, ислоҳот ворид мекунем ва интиқоли маълумотро такрор мекунем.

хулоса

Ин вазифа хеле кам аст ва танҳо аз сабаби маҳдудиятҳои дар боло зикршуда ба миён меояд. Ҳалли маъмултарин ин навсозии SQL Server ё пайваст шудан ба сервери дурдаст аст, агар меъмории барнома ба он иҷозат диҳад. Бо вуҷуди ин, ҳеҷ кас аз рамзи меросӣ ва дастҳои каҷи рушди пастсифат эмин нест. Умедворам, ки ба шумо ин дастурҳо ниёз нахоҳед дошт ва агар ба шумо лозим бошад, онҳо ба шумо барои сарфаи вақти зиёд ва асабҳо кӯмак мекунанд. Ба диққататон ташаккур!

Рӯйхати манбаъҳои истифодашуда

Манбаъ: will.com