Преношење резервних података са нове верзије МС СКЛ Сервера на старију верзију

praistorija

Једном, да бих репродуковао грешку, била ми је потребна резервна копија производне базе података.

На моје изненађење, наишао сам на следећа ограничења:

  1. Резервна копија базе података је направљена на верзији СКЛ Сервер КСНУМКС и није био компатибилан са мојим СКЛ Сервер КСНУМКС.
  2. На мом радном рачунару коришћени ОС је био прозори КСНУМКСтако да нисам могао да ажурирам СКЛ Сервер до верзије 2016
  3. Подржани производ је био део већег система са чврсто повезаном застарелом архитектуром и такође је разговарао са другим производима и базама, тако да је могло потрајати веома дуго да се постави на другу станицу.

С обзиром на наведено, дошао сам до закључка да је дошло време за штаке нестандардних решења.

Враћање података из резервне копије

Одлучио сам да користим виртуелну машину Орацле ВМ ВиртуалБок са Виндовс 10 (можете узети пробну слику за Едге претраживач стога). СКЛ Сервер 2016 је инсталиран на виртуелној машини и база података апликације је враћена из резервне копије (инструкција).

Конфигурисање приступа СКЛ Серверу на виртуелној машини

Затим је било потребно предузети неке кораке да бисте могли да приступите СКЛ Серверу споља:

  1. За заштитни зид додајте правило за прескакање захтева за портове 1433.
  2. Пожељно је да приступ серверу не иде кроз виндовс аутентификацију, већ преко СКЛ-а користећи логин и лозинку (лакше је подесити приступ). Међутим, у овом случају, морате запамтити да омогућите СКЛ аутентификацију у својствима СКЛ Сервера.
  3. У корисничким подешавањима на СКЛ серверу на картици Мапирање корисника наведите корисничку улогу за враћену базу података дб_сецуритиадмин.

Пренос података

У ствари, сам пренос података се састоји од две фазе:

  1. Пренос шеме података (табеле, прикази, ускладиштене процедуре, итд.)
  2. Сам пренос података

Пренос шеме података

Вршимо следеће операције:

  1. одабрати Задаци -> Генерисање скрипти за преносиву базу.
  2. Изаберите објекте које треба да пренесете или оставите подразумевану вредност (у овом случају, скрипте ће бити креиране за све објекте базе података).
  3. Одредите подешавања за чување скрипте. Најпогодније је сачувати скрипту у једној Уницоде датотеци. Затим, у случају неуспеха, не морате поново да понављате све кораке.

Када се скрипта сачува, може се покренути на оригиналном СКЛ Серверу (стара верзија) да би се створила потребна база.

Упозорење: Након извршавања скрипте, потребно је да проверите кореспонденцију између подешавања базе података из резервне копије и базе података коју је креирала скрипта. У мом случају није било подешавања за ЦОЛЛАТЕ у скрипти, што је довело до неуспеха при преносу података и плесу са тамбуром да се поново креира база података помоћу допуњене скрипте.

Пренос података

Пре преноса података, морате онемогућити проверу свих ограничења у бази података:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Пренос података се врши помоћу чаробњака за увоз података Задаци -> Увези податке на СКЛ Серверу, где се налази база података креирана скриптом:

  1. Наведите поставке везе са извором (СКЛ Сервер 2016 на виртуелној машини). Користио сам извор података СКЛ Сервер изворни клијент и горе поменута СКЛ аутентикација.
  2. Одредите подешавања везе за одредиште (СКЛ Сервер 2014 на главној машини).
  3. Затим подесите мапирање. Сви морају бити одабрани није само за читање објекти (на пример, погледи не морају бити изабрани). Као додатне опције, изаберите „Дозволи уметање у колоне идентитета“ако се такви користе.
    Упозорење: ако при покушају одабира неколико табела и постављања њиховог својства „Дозволи уметање у колоне идентитета“ својство је већ подешено за најмање једну од изабраних табела, дијалог ће показати да је својство већ подешено за све изабране табеле. Ова чињеница може бити збуњујућа и довести до грешака у миграцији.
  4. Почињемо са трансфером.
  5. Враћање провере ограничења:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Ако дође до грешке, проверавамо подешавања, бришемо базу података креирану са грешкама, поново је креирамо из скрипте, вршимо исправке и понављамо пренос података.

Закључак

Овај задатак је прилично редак и јавља се само због горе наведених ограничења. Најчешће решење је надоградња СКЛ Сервера или повезивање са удаљеним сервером ако архитектура апликације то дозвољава. Међутим, нико није имун од наслеђеног кода и кривих руку неквалитетног развоја. Надам се да вам ово упутство неће требати, али ако вам је и даље потребно, помоћи ће вам да уштедите много времена и живаца. Хвала на пажњи!

Списак коришћених извора

Извор: ввв.хабр.цом