Сақтық көшірме деректерін MS SQL Server жаңа нұсқасынан ескі нұсқасына тасымалдау

тарихын

Бірде қатені қайта жасау үшін маған өндірістік дерекқордың сақтық көшірмесі қажет болды.

Менің таң қалдым, мен келесі шектеулерге тап болдым:

  1. Нұсқада дерекқордың сақтық көшірмесі жасалды SQL Server 2016 және менімен үйлеспеді SQL Server 2014.
  2. Менің жұмыс компьютерімде ОЖ болды Windows 7сондықтан мен жаңарта алмадым SQL Server 2016 нұсқасына дейін
  3. Қолдау көрсетілетін өнім бір-бірімен тығыз байланысқан бұрынғы архитектурасы бар үлкенірек жүйенің бөлігі болды және басқа өнімдер мен базаларға қол жеткізді, сондықтан басқа станцияға орналастыру өте ұзақ уақыт алуы мүмкін.

Жоғарыда айтылғандарды ескере отырып, мен стандартты емес шешімдердің балдақтарының уақыты келді деген қорытындыға келдім.

Сақтық көшірмеден деректерді қалпына келтіру

Мен виртуалды машинаны пайдалануды шештім Oracle VM VirtualBox Windows 10 жүйесімен (сіз Edge браузері үшін сынақ суретін түсіре аласыз мұнда). SQL Server 2016 виртуалды машинаға орнатылды және қолданбалы дерекқор сақтық көшірмеден қалпына келтірілді (нұсқаулық).

Виртуалды машинада SQL серверіне қол жеткізуді орнату

Әрі қарай, SQL серверіне сырттан кіруге мүмкіндік беру үшін бірнеше қадамдар жасау қажет болды:

  1. Брандмауэр үшін порт сұрауларының өтуіне рұқсат беретін ережені қосыңыз 1433.
  2. Серверге кіру Windows аутентификациясы арқылы емес, логин мен құпия сөзді пайдаланып SQL арқылы жүзеге асырылған жөн (қол жеткізуді конфигурациялау оңайырақ). Дегенмен, бұл жағдайда SQL серверінің сипаттарында SQL аутентификациясын қосуды есте сақтау керек.
  3. Қойындыдағы SQL серверіндегі пайдаланушы параметрлерінде Пайдаланушыларды картаға түсіру қалпына келтірілген дерекқор үшін пайдаланушы рөлін көрсетіңіз db_securityadmin.

Деректерді тасымалдау

Шын мәнінде, деректерді берудің өзі екі кезеңнен тұрады:

  1. Деректер схемасын тасымалдау (кестелер, көріністер, сақталған процедуралар және т.б.)
  2. Деректердің өзін тасымалдау

Деректер схемасын тасымалдау

Біз келесі операцияларды орындаймыз:

  1. Біз таңдаймыз Тапсырмалар -> Сценарийлерді жасау портативті база үшін.
  2. Тасымалдау қажет нысандарды таңдаңыз немесе әдепкі мәнді қалдырыңыз (бұл жағдайда барлық дерекқор нысандары үшін сценарийлер жасалады).
  3. Сценарийді сақтау параметрлерін көрсетіңіз. Ең қолайлы әдіс - сценарийді Юникод кодтауында бір файлда сақтау. Содан кейін, егер сәтсіздік болса, барлық қадамдарды қайталаудың қажеті жоқ.

Сценарий сақталғаннан кейін оны қажетті дерекқорды жасау үшін бастапқы SQL серверінде (ескі нұсқа) орындауға болады.

Ескерту: Сценарийді орындағаннан кейін резервтік көшірмеден және сценариймен жасалған дерекқордан дерекқор параметрлерінің сәйкестігін тексеру керек. Менің жағдайда сценарийде COLLATE параметрі болмады, бұл деректерді тасымалдау кезінде сәтсіздікке әкелді және кеңейтілген сценарийді пайдаланып дерекқорды қайта құру үшін бубенмен биледі.

Деректерді тасымалдау

Деректерді тасымалдау алдында дерекқордағы барлық шектеулерді тексеруді өшіру керек:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Деректерді тасымалдау Деректерді импорттау шеберінің көмегімен жүзеге асырылады Тапсырмалар -> Деректерді импорттау сценарий арқылы жасалған дерекқор орналасқан SQL серверінде:

  1. Көзге қосылым параметрлерін көрсетіңіз (виртуалды машинадағы SQL Server 2016). Деректер көзін пайдаландым SQL Server жергілікті клиенті және жоғарыда аталған SQL аутентификациясы.
  2. Біз тағайындалған жерге қосылым параметрлерін көрсетеміз (хост компьютердегі SQL Server 2014).
  3. Содан кейін біз картаны орнатамыз. Барлығын таңдау керек тек оқуға арналған емес нысандар (мысалы, көріністерді таңдау қажет емес). Қосымша опцияларды таңдау керек «Сәйкестік бағандарына кірістіруге рұқсат ету», егер олар пайдаланылса.
    Ескерту: бірнеше кестені таңдап, оларға сипатты тағайындауға тырыссаңыз «Сәйкестік бағандарына кірістіруге рұқсат ету» сипат бұрын таңдалған кестелердің кемінде біреуі үшін орнатылған болса, диалогтық терезе сипат барлық таңдалған кестелер үшін әлдеқашан орнатылғанын көрсетеді. Бұл факт шатастыруы және тасымалдау қателеріне әкелуі мүмкін.
  4. Трансферді бастайық.
  5. Шектеу тексеруін қалпына келтіру:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Қандай да бір қателер орын алса, біз параметрлерді тексереміз, қателермен жасалған дерекқорды жоямыз, оны сценарийден қайта жасаймыз, түзетулер енгіземіз және деректерді беруді қайталаймыз.

қорытынды

Бұл тапсырма өте сирек кездеседі және жоғарыда аталған шектеулерге байланысты ғана туындайды. Ең кең таралған шешім - SQL серверін жаңарту немесе қолданба архитектурасы рұқсат берсе, қашықтағы серверге қосылу. Дегенмен, ескі код пен сапасыз дамудың қисық қолдарынан ешкім қауіпсіз емес. Сізге бұл нұсқаулар қажет емес деп үміттенемін, егер сізге қажет болса, олар сізге көп уақыт пен жүйкені үнемдеуге көмектеседі. Назарларыңызға рахмет!

Пайдаланылған көздер тізімі

Ақпарат көзі: www.habr.com