Zaxira ma'lumotlarini MS SQL Serverning yangi versiyasidan eski versiyasiga o'tkazish

Sana oldin

Bir marta, xatoni takrorlash uchun menga ishlab chiqarish ma'lumotlar bazasining zaxira nusxasi kerak edi.

Ajablanarlisi shundaki, men quyidagi cheklovlarga duch keldim:

  1. Ma'lumotlar bazasining zaxira nusxasi versiyada amalga oshirildi SQL Server 2016 va menikiga mos kelmadi SQL Server 2014.
  2. Mening ish kompyuterimda operatsion tizim mavjud edi Windows 7shuning uchun men yangilay olmadim SQL Server 2016 versiyasigacha
  3. Qo'llab-quvvatlanadigan mahsulot chambarchas bog'langan eski arxitekturaga ega bo'lgan kattaroq tizimning bir qismi edi va boshqa mahsulotlar va bazalarga ham kirish mumkin edi, shuning uchun uni boshqa stantsiyaga joylashtirish juda uzoq vaqt talab qilishi mumkin.

Yuqoridagilarni hisobga olib, men nostandart echimlarning tayoqchalari uchun vaqt keldi degan xulosaga keldim.

Zaxiradan ma'lumotlarni tiklash

Men virtual mashinadan foydalanishga qaror qildim Oracle VM VirtualBox Windows 10 bilan (siz Edge brauzeri uchun sinov tasvirini olishingiz mumkin shu yerda). SQL Server 2016 virtual mashinaga o'rnatildi va dastur ma'lumotlar bazasi zaxiradan tiklandi (ko'rsatmalar).

Virtual mashinada SQL Serverga kirishni sozlash

Keyinchalik, SQL Serverga tashqaridan kirish imkoniyatini yaratish uchun ba'zi choralarni ko'rish kerak edi:

  1. Xavfsizlik devori uchun port so'rovlarini o'tishga ruxsat berish uchun qoida qo'shing 1433.
  2. Serverga kirish Windows autentifikatsiyasi orqali emas, balki login va parol yordamida SQL orqali amalga oshirilishi tavsiya etiladi (kirishni sozlash osonroq). Biroq, bu holda, SQL Server xususiyatlarida SQL autentifikatsiyasini yoqishni unutmang.
  3. Yorliqdagi SQL Serverdagi foydalanuvchi sozlamalarida Foydalanuvchi xaritasi tiklangan ma'lumotlar bazasi uchun foydalanuvchi rolini belgilang db_securityadmin.

Ma'lumot uzatish

Aslida, ma'lumotlarni uzatishning o'zi ikki bosqichdan iborat:

  1. Ma'lumotlar sxemasini uzatish (jadvallar, ko'rinishlar, saqlangan protseduralar va boshqalar).
  2. Ma'lumotlarni o'zi uzatish

Ma'lumotlar sxemasini uzatish

Biz quyidagi operatsiyalarni bajaramiz:

  1. Tanlaymiz Vazifalar -> Skriptlarni yaratish portativ baza uchun.
  2. O'tkazishingiz kerak bo'lgan ob'ektlarni tanlang yoki standart qiymatni qoldiring (bu holda barcha ma'lumotlar bazasi ob'ektlari uchun skriptlar yaratiladi).
  3. Skriptni saqlash uchun sozlamalarni belgilang. Eng qulay usul - skriptni Unicode kodlashda bitta faylda saqlash. Keyin, agar muvaffaqiyatsiz bo'lsa, barcha amallarni yana takrorlashingiz shart emas.

Skript saqlanganidan so'ng, kerakli ma'lumotlar bazasini yaratish uchun manba SQL Serverda (eski versiya) bajarilishi mumkin.

Ogohlantirish: Skriptni bajarganingizdan so'ng, siz ma'lumotlar bazasi sozlamalarining zaxira nusxasidan va skript tomonidan yaratilgan ma'lumotlar bazasidan muvofiqligini tekshirishingiz kerak. Mening holatimda, skriptda COLLATE uchun sozlama yo'q edi, bu ma'lumotlarni uzatishda va kengaytirilgan skript yordamida ma'lumotlar bazasini qayta yaratish uchun daf bilan raqsga tushishda muvaffaqiyatsizlikka olib keldi.

Ma'lumot uzatish

Ma'lumotlarni uzatishdan oldin siz ma'lumotlar bazasidagi barcha cheklovlarni tekshirishni o'chirib qo'yishingiz kerak:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Ma'lumotlarni uzatish Ma'lumotlarni import qilish ustasi yordamida amalga oshiriladi Vazifalar -> Ma'lumotlarni import qilish skript tomonidan yaratilgan ma'lumotlar bazasi joylashgan SQL Serverda:

  1. Manbaga ulanish sozlamalarini belgilang (virtual mashinada SQL Server 2016). Men ma'lumotlar manbasidan foydalandim SQL Server Native Client va yuqorida aytib o'tilgan SQL autentifikatsiyasi.
  2. Belgilangan joyga ulanish sozlamalarini belgilaymiz (host mashinasida SQL Server 2014).
  3. Keyin biz xaritalashni o'rnatamiz. Hammasini tanlashingiz kerak faqat o'qish uchun emas ob'ektlar (masalan, ko'rinishlarni tanlash shart emas). Qo'shimcha variantlarni tanlash kerak "Identifikatsiya ustunlariga kiritishga ruxsat berish", agar shunday ishlatilsa.
    Ogohlantirish: agar siz bir nechta jadvallarni tanlashga harakat qilsangiz va ularga mulkni tayinlasangiz "Identifikatsiya ustunlariga kiritishga ruxsat berish" xususiyat allaqachon tanlangan jadvallarning kamida bittasi uchun o'rnatilgan bo'lsa, dialog oynasi barcha tanlangan jadvallar uchun xususiyat allaqachon o'rnatilganligini bildiradi. Bu fakt chalkashtirib yuborishi va transfer xatolariga olib kelishi mumkin.
  4. Transferni boshlaylik.
  5. Cheklov tekshiruvini tiklash:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Har qanday xatolik yuzaga kelsa, biz sozlamalarni tekshiramiz, xatolar bilan yaratilgan ma'lumotlar bazasini o'chirib tashlaymiz, uni skriptdan qayta yaratamiz, tuzatishlar kiritamiz va ma'lumotlar uzatishni takrorlaymiz.

xulosa

Bu vazifa juda kam uchraydi va faqat yuqoridagi cheklovlar tufayli yuzaga keladi. Eng keng tarqalgan yechim, agar dastur arxitekturasi ruxsat bersa, SQL Serverni yangilash yoki masofaviy serverga ulanishdir. Biroq, hech kim eski kodlardan va sifatsiz rivojlanishning egri qo'llaridan xavfsiz emas. Umid qilamanki, sizga bu ko'rsatmalar kerak bo'lmaydi va agar sizga kerak bo'lsa, ular sizga ko'p vaqt va asablarni tejashga yordam beradi. E'tiboringiz uchun rahmat!

Foydalanilgan manbalar ro'yxati

Manba: www.habr.com