Mindahkeun data cadangan tina versi anyar MS SQL Server ka versi heubeul

prasajarah

Sakali, dina raraga baranahan bug, abdi diperlukeun cadangan database produksi.

Pikeun reuwas kuring, kuring lumpat kana watesan ieu:

  1. Cadangan database dijieun dina versi SQL Server 2016 tur éta teu cocog sareng abdi SQL Server 2014.
  2. Dina komputer gawé kuring, OS dipaké nyaéta Windows 7jadi kuring teu bisa ngamutahirkeun SQL Server nepi ka versi 2016
  3. Produk anu dirojong mangrupikeun bagian tina sistem anu langkung ageung sareng arsitéktur warisan anu caket sareng ogé nyarios ka produk sareng pangkalan anu sanés, janten tiasa lami pisan pikeun nyebarkeunana ka stasiun sanés.

Dibikeun di luhur, kuring sumping ka kacindekan yén waktuna geus datangna pikeun crutches sahiji solusi non-standar.

Malikkeun data tina cadangan

Kuring milih ngagunakeun mesin virtual Oracle VM VirtualBox sareng Windows 10 (anjeun tiasa nyandak gambar uji pikeun browser Edge di dieu). SQL Server 2016 dipasang dina mesin virtual sareng pangkalan data aplikasi disimpen deui tina cadangan (parentah).

Ngonpigurasikeun aksés ka SQL Server dina mesin virtual

Salajengna, perlu nyandak sababaraha léngkah pikeun tiasa ngaksés SQL Server ti luar:

  1. Pikeun firewall, tambahkeun aturan pikeun skip requests port 1433.
  2. Éta desirable yén aksés ka server henteu ngaliwatan auténtikasi windows, tapi ngaliwatan SQL ngagunakeun login sarta sandi (éta gampang pikeun nyetél aksés). Nanging, dina hal ieu, anjeun kedah émut pikeun ngaktipkeun Auténtikasi SQL dina sipat SQL Server.
  3. Dina setélan pamaké dina SQL Server dina tab Pemetaan pamaké nangtukeun peran pamaké pikeun database disimpen db_securityadmin.

Mindahkeun data

Sabenerna, mindahkeun data sorangan diwangun ku dua tahap:

  1. Transfer skéma data (tabel, pintonan, prosedur disimpen, jsb.)
  2. Mindahkeun data sorangan

mindahkeun skéma data

Urang ngalakukeun operasi di handap ieu:

  1. Pilih Tugas -> Ngahasilkeun Skrip pikeun base portabel.
  2. Pilih obyék anu anjeun peryogikeun pikeun mindahkeun atanapi tinggalkeun nilai standar (dina hal ieu, skrip bakal diciptakeun pikeun sadaya objék database).
  3. Sebutkeun setélan pikeun nyimpen naskah. Pangmerenahna pikeun nyimpen naskah dina file Unicode tunggal. Teras, upami gagal, anjeun henteu kedah ngulang sadaya léngkah deui.

Sakali naskah disimpen, éta bisa dijalankeun dina SQL Server aslina (versi heubeul) pikeun nyieun basa diperlukeun.

Perhatosan: Saatos ngaéksekusi naskah, anjeun kedah pariksa korespondensi antara setélan pangkalan data tina cadangan sareng pangkalan data anu diciptakeun ku naskah. Bisi kuring, teu aya setélan pikeun COLLATE dina naskah, anu nyababkeun gagal nalika nransferkeun data sareng nari nganggo rebana pikeun nyiptakeun pangkalan data nganggo naskah anu ditambah.

Mindahkeun data

Sateuacan mindahkeun data, anjeun kedah nganonaktipkeun pamariksaan sadaya larangan dina pangkalan data:

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

Mindahkeun data dilaksanakeun nganggo wizard impor data Tugas -> Impor Data dina SQL Server, dimana database dijieun ku naskah ayana:

  1. Sebutkeun setélan sambungan kana sumberna (SQL Server 2016 dina mesin virtual). Kuring dipaké sumber data SQL Server klien pituin jeung auténtikasi SQL disebut tadi.
  2. Sebutkeun setélan sambungan pikeun tujuan (SQL Server 2014 dina mesin host).
  3. Salajengna, nyetél pemetaan. Sadayana kedah dipilih teu dibaca wungkul objék (contona, pintonan teu perlu dipilih). Salaku pilihan tambahan, pilih "Ngidinan ngalebetkeun kana kolom identitas"lamun kitu dipaké.
    Perhatosan: upami, nalika nyobian milih sababaraha tabel tur nyetel sipat maranéhanana "Ngidinan ngalebetkeun kana kolom identitas" harta geus diatur pikeun sahanteuna hiji tabel dipilih, dialog bakal nunjukkeun yén harta geus diatur pikeun sakabéh tabel dipilih. Kanyataan ieu tiasa ngabingungkeun sareng nyababkeun kasalahan migrasi.
  4. Urang ngamimitian mindahkeun.
  5. Malikkeun mariksa konstrain:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

Upami aya kasalahan, urang pariksa setélan, ngahapus pangkalan data anu didamel ku kasalahan, jieun deui tina naskah, koréksi sareng malikan deui transfer data.

kacindekan

Tugas ieu rada jarang sareng lumangsung ngan kusabab watesan di luhur. Solusi anu paling umum nyaéta ningkatkeun SQL Server atanapi nyambung ka server jauh upami arsitéktur aplikasi ngamungkinkeun. Nanging, teu aya anu kebal tina kode warisan sareng panangan bengkok tina pangwangunan kualitas goréng. Abdi ngarepkeun anjeun henteu peryogi petunjuk ieu, tapi upami anjeun masih peryogi éta, éta bakal ngabantosan ngahémat waktos sareng saraf. Nuhun kana perhatosanana!

Daptar sumber anu digunakeun

sumber: www.habr.com