Saya membaca bahwa mungkin untuk memulihkan database di SQL Server selama Anda memulihkan dari versi yang lebih lama ke versi yang lebih baru, untuk alasan kompatibilitas mundur.
Adakah yang tahu jika Anda dapat mengembalikan database dari file * .bak untuk edisi SQL Server yang berbeda? Kami sedang memindahkan basis data yang sangat besar melalui FTP yang akan memakan waktu beberapa hari, jadi kami lebih suka melakukannya sekali saja. Jika tidak ada yang merespons pada saat kami mentransfer database melalui FTP, kami jelas akan mencoba ini dan melihat apakah itu bekerja dengan pengujian, dan menjawab pertanyaan kami sendiri.
Di bawah ini adalah kueri untuk mendapatkan detail versi SQL Server. Ada productversion
dalam format {major revision}.{minor revision}.{release revision}.{build number}
. Dalam kasus saya, {release revision}
nilai 5500
untuk sumber dan 5512
target. Jadi itu terlihat oke. Namun edition
berbeda.
Pertanyaan:
SELECT
SERVERPROPERTY('productversion'),
SERVERPROPERTY('productlevel'),
SERVERPROPERTY('edition')
Sumber basis data:
10.0.5500.0
SP3
Developer Edition (64-bit)
Database target:
10.0.5512.0
SP3
Enterprise Edition (64-bit)
sumber
Jawaban:
Dari Developer ke Enterprise akan baik-baik saja, pastikan saja jika Anda menggunakan lisensi prosesor, Anda memiliki lisensi di server target untuk mencakup semua CPU. Dan itu tidak cukup hanya menyembunyikan mereka dari SQL, jika mereka terhubung secara fisik ke mesin, Anda bertanggung jawab untuk mereka.
Juga ketika Anda beralih dari build yang lebih rendah ke build yang lebih tinggi, versi database Anda akan meningkat. Ada beberapa skenario di mana ini bisa bermasalah - misalnya jika Anda menggunakan 15.000 dukungan partisi pada build spesifik 2008, itu tidak akan berfungsi ketika Anda memutakhirkan ke build spesifik 2008 R2. Anda mungkin juga mengandalkan pengoptimalan (dan memiliki solusi di tempat) yang sebenarnya bug dalam versi lama tetapi diperbaiki di versi baru, dan ini dapat menyebabkan kinerja yang lebih buruk. Penting juga untuk meninjau setiap tanda jejak yang digunakan di sumber dan menentukan apakah tanda tersebut juga harus diaktifkan di tujuan. Jangankan pekerjaan, login, dll.
Tentu saja Anda tidak bisa mundur. Saya belum pernah mencoba downgrade kecil seperti 10.0.5512 -> 10.0.5500 tetapi jelas tidak mungkin turun dalam paket layanan atau versi. Jadi jika Anda memiliki database 2012 pada instance Edisi Pengembang Anda dan Anda ingin menjadikannya pada instance 2008 Anda dalam produksi, Anda akan memiliki pekerjaan yang cocok untuk Anda (lihat di sini dan di sini ) - terutama jika Anda telah menggunakan fitur 2012 .
Tetapi untuk membahas kasus-kasus lain yang mungkin membuat orang-orang di pertanyaan ini (misalnya seseorang ingin pergi dari Developer -> Standard atau Enterprise -> Express atau apa pun)) ...
Ada edisi lain -> peningkatan edisi yang tidak akan berjalan dengan baik, misalnya dari Pengembang -> Ekspres jika Anda telah menggunakan fitur apa pun yang tidak didukung dalam Express (dan hal yang sama berlaku untuk edisi apa pun selain Enterprise). Beberapa contoh fitur yang tidak dapat Anda gunakan pada edisi tingkat bawah (dalam hal ini pemulihan akan mati pada saat ia mencoba untuk membawa database online):
Saya tidak tahu apakah ada cara untuk mengatakan ini langsung dari file .BAK (Saya yakin ada beberapa keajaiban yang dapat diekstrak dari header halaman di suatu tempat, atau jika Anda punya akhir pekan untuk membakar dengan hex editor) , tetapi sementara database masih utuh pada sumber contoh, Anda selalu dapat melakukan hal berikut untuk melihat apakah Anda menggunakan fitur apa pun yang tersedia karena SKU Anda berada di:
Saya tidak yakin apakah SQL Server Audit harus ada dalam daftar itu - edisi eksklusif fitur itu telah berubah, jadi mungkin tergantung pada apa yang Anda lakukan dengannya. Ada hal-hal lain yang mungkin Anda gunakan tetapi tidak akan muncul di DMV (beberapa karena mereka ada dalam kode Anda, yang DMV tidak parse, dan beberapa karena database Anda mengandalkan hal-hal eksternal seperti SQL Server Agent , Pialang Layanan, dll.):
Ada juga kasus di mana Anda tidak akan bisa pergi dari Developer ke Express karena keterbatasan ukuran file (database Express dibatasi hingga 10GB dalam ukuran file data total).
Tentu saja mungkin ada Gotcha lain yang Anda tidak akan diperingatkan - mereka tidak akan mencegah migrasi, tetapi mereka mungkin menyebabkan kinerja yang sangat berbeda pada target. Contoh:
NOEXPAND
. Dan Anda bahkan mungkin tidak menyadari bahwa kemampuan ini adalah mengapa permintaan Anda tiba-tiba melambat.UPDATE berdasarkan duplikat ini :
Mungkin ada kasus di mana Anda mencoba mengembalikan database dari edisi tertentu ke edisi yang lebih rendah (bahkan pada versi yang sama), dan Anda mendapatkan kesalahan yang kurang bermanfaat :
Ini tidak terlalu intuitif. Namun jika Anda melihat lebih dalam pada log peristiwa SQL Server, Anda akan melihat lebih banyak kesalahan bermanfaat (hanya satu contoh):
Sekarang, itu tidak sepenuhnya benar - Anda juga dapat mengembalikan ke Edisi Evaluasi atau Edisi Pengembang, tapi itu intinya. Untuk memulihkan database ini, Anda pada dasarnya memiliki dua opsi:
Variasi pada (2) adalah menghapus partisi dan fitur-fitur lain pada basis data sumber, dan mengambil cadangan lain. Tetapi jika itu tidak rusak ...
sumber
Pengembang dan Perusahaan adalah perangkat lunak yang sama, hanya dengan perjanjian lisensi yang berbeda.
Anda harus mengembalikan database ini ke tujuan dengan baik.
sumber