Saya baru saja memutakhirkan database SQL Server 2000 ke 2008 R2.
Apa yang saya lakukan adalah:
- Shutdown SQL Server 2000 (express) service di mesin lama,
- Pindahkan datafiles ( mydatabase.mdf dan mydatabase.ldf ) ke mesin baru,
- Jalankan SQL Server Management Studio 2008,
- Terhubung ke mesin basis data lokal,
- Lampirkan datafiles ke basis data.
- Ubah tingkat kompatibilitas database ke SQL 2008 (100).
Pertanyaan: Apa lagi yang harus saya lakukan untuk menyelesaikan migrasi?
Aku ingin:
- menggunakan fitur baru seperti checksumming dan model pemulihan penuh,
- membuat database ini persis seperti yang dibuat di SQL 2008 R2,
- membuat database ini sepenuhnya kompatibel, benar dan sangat cocok untuk yang baru, mesin database SQL 2008 R2.
Dengan kata lain: Saya hanya ingin tahu bagaimana dengan benar dan lengkap mengkonversi database SQL 2000 lama ke database 2008 R2 baru, tenang bahwa semuanya dilakukan dengan benar dan senang dengan semua fitur baru.
Saya mengajukan pertanyaan ini, karena saya telah menemukan banyak situs di Internet yang mengatakan banyak hal berbeda yang membuat saya bingung: beberapa mengatakan bahwa diperlukan untuk membangun kembali indeks, yang lain mengatakan untuk melakukan hal-hal lain ... dan sekarang saya tidak tahu apa-apa jadi saya ingin mendengar pendapat orang yang berpengalaman dan instruksi yang jelas, langkah-demi-langkah. Saya bekerja untuk perusahaan yang sangat kecil, saya sendiri dan saya tidak ingin mengacaukan semuanya.
Pak, saya sangat terkesan dengan jawaban Anda, saya tidak terlalu berharap.
Demikian beberapa komentar:
Basis data sekarang dalam produksi. Seperti yang saya katakan, itu ditingkatkan menggunakan metode deattach-attach seperti yang saya deskripsikan di posting pertama dan seperti yang dijelaskan pada MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Itu harus dilakukan dengan cepat, jadi saya terpaksa melakukannya dengan cara itu. Mari kita lupakan betapa tidak pantasnya itu dan fokus pada situasi saat ini.
Pengguna / pengajuan bukan masalah di sini - hanya ada sedikit dan izinnya sederhana.
Aplikasi yang menggunakan basis data kompatibel dengan SQL 2000 hingga 2012 jadi ini bukan masalah juga.
File database (MDF) tidak besar - hanya sekitar 1GB.
Beberapa pertanyaan lagi:
Anda merekomendasikan untuk menggunakan metode backup / restore, tetapi saya lakukan seperti yang ditulis di atas, jadi bisakah saya menemui masalah sekarang? Semuanya bekerja tanpa masalah.
Tentang checksumming dan model pemulihan penuh: tidak tersedia / diaktifkan pada SQL 2000, jadi saya ingin menggunakannya sekarang. Anda mengatakan bahwa satu-satunya hal yang perlu saya lakukan adalah mengaktifkan opsi itu di properti basis data? Saya pernah membaca di suatu tempat, bahwa itu tidak cukup dan saya juga harus membangun kembali indeks atau sesuatu. Saya benar-benar tidak tahu, saya hanya bertanya.
Saya bersiap untuk memigrasi database ini ke SQL 2012 - jadi pertama-tama dari SQL 2000 ke 2008 R2, sekarang dari 2008 R2 hingga 2012 (tidak mungkin untuk melakukan ini secara langsung karena kurangnya dukungan dari database SQL 2000 di SQL 2012). Jadi saya mengerti bahwa saya harus mengikuti panduan Anda: backup di 2008 R2 dan restore pada 2012, lalu lakukan sisa tips Anda, kan?
Tolong jelaskan saya metode backup / restore: Apakah ini seperti dump database ke query SQL dan kemudian mengembalikannya dengan mengeksekusi sekelompok query? Akankah metode ini dengan cara "defragment" database saya? Jika tidak, bagaimana cara defrag / mengoptimalkannya secara manual?
Karena kami menggunakan SQL 2000 Express selama bertahun-tahun (tanpa antarmuka manajemen), kami melakukan pencadangan hanya dengan menghentikan engine dan RAR direktori DATA. Untuk saat ini, karena kami menggunakan SQL 2008, bukankah ini masih lebih baik daripada menggunakan fungsi cadangan di Management Studio?
Mode pemulihan penuh dengan cadangan log Transaksi yang sering - Di mana log Transaksi disimpan - apakah ini file LDF? Bagaimana saya bisa mencadangkannya dengan benar?
Saya tahu bahwa pertanyaan saya mungkin terdengar konyol, saya bukan admin basis data profesional, tetapi saya satu-satunya orang di sini yang dapat melakukan tugas "inti" seperti memperbarui mesin basis data. Saya juga yakin bahwa pengetahuan Anda akan banyak membantu orang lain seperti saya.
Terima kasih banyak atas waktu dan pengetahuan Anda, saya sangat menghargai ini.
sumber
Jawaban:
Langkah terpenting yang harus dilakukan adalah menjalankan Upgrade Advisor pada database SQL Server 2000 dan mengatasi semua masalah yang dilaporkan olehnya.
Sebagai praktik terbaik, gunakan alat Penasihat Upgrade pada database warisan SQL Server 2000 Anda dan impor file jejak ke alat Penasihat Upgrade untuk analisis. File jejak memungkinkan Penasihat Peningkatan mendeteksi masalah yang mungkin tidak muncul dalam pemindaian sederhana dari database, seperti TSQL yang tertanam dalam aplikasi. Anda bisa menangkap jejak TSQL menggunakan SQL Profiler di server SQL Server 2000 Anda selama jam-jam biasa dan menganalisis jejak ini menggunakan Upgrade Advisor.
Jadi sisa langkahnya adalah:
Pada hari migrasi:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
SP_REFRESHVIEW view_name
Di SQL Server 2005 dan lebih tinggi, Database Mail diperkenalkan. Jadi, Anda harus bermigrasi dari SQLMail ke Database Mail.
Juga, jika Anda memiliki replikasi, maka Anda harus mengatur ulang. Jika ada DR yang suka logshipping atau Mirroring (baru tahun 2005 dan lebih tinggi, tetapi terdepresiasi pada tahun 2012) maka Anda harus mengatur ulang juga.
Paket DTS lama perlu dimigrasi ke SSIS menggunakan
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(baris perintah) atau menggunakan Package Migration Wizard .Anda juga dapat menggunakan skrip saya yang ditemukan di /dba//a/36701/8783 . Meskipun, ia menggunakan metode detach / attach, saya sangat menyarankan Anda untuk menggunakan metode CADANGAN / KEMBALIKAN . Ubah skrip yang sesuai.
Sebagai catatan:
Mari kita jawab pertanyaan Anda ...
Lihat jawaban saya. Ini akan membantu Anda dengan benar membuat rencana migrasi. Selalu uji rencana migrasi Anda dalam UAT (non produksi) bersama dengan pengujian aplikasi yang tepat oleh pengguna bisnis.
CHECKSUM
baru di SQL Server 2005 dan lebih tinggi. Saya telah membahasnya sebagai bagian dari langkah migrasi yang dijelaskan di atas.full recovery model
bukan hal baru. Itu tergantung pada jenis bisnis Anda dan menentukan berapa banyak data yang bisa Anda kehilangan jika terjadi bencana.Mode pemulihan penuh dengan cadangan log transaksi yang sering akan memungkinkan Anda untuk mengembalikan point-in-time dan dengan mengurangi jumlah kehilangan data.
Jangan sepenuhnya memahami ini! Tetapi langkah migrasi di atas akan membantu Anda. Anda hanya perlu mengembalikan database dan mengubah level 10 kompatibilitas
100
bersama dengan langkah-langkah di atas.Anda harus berhati-hati dengan ini, karena ini akan memerlukan perubahan pada kode aplikasi Anda juga. Jika kode aplikasi Anda diubah untuk menggunakan fitur-fitur baru di SQL Server 2008 R2, maka Anda tidak akan menghadapi masalah apa pun - DIBERIKAN Anda telah sepenuhnya melakukan pengujian regresi lengkap aplikasi Anda di lingkungan UAT atau DEV. Ini akan memberi Anda kepercayaan diri terbaik saat melakukan migrasi aktual di PROD.
Catatan: Di atas adalah langkah-langkah yang bisa saya ingat dan saya cukup yakin bahwa tidak ada yang tertinggal. Jika saya melihat ada sesuatu yang terlewat, maka saya akan menambahkannya atau pakar lain di situs ini - silakan menambahkan!
Segala sesuatu yang diuraikan di atas perlu terlebih dahulu diputar ulang di lingkungan NON PRODUKSI untuk menghindari kejutan selama migrasi yang sebenarnya.
----------
Beberapa pertanyaan lagi:
Jika semuanya bekerja dengan baik dan Anda dapat melampirkan database, maka TIDAK Anda tidak akan mengalami masalah. Detach / Attach vs Backup / Restore hanyalah sebuah metode tentang bagaimana Anda memindahkan database Anda ke tempat yang berbeda. Hanya FYI .. Backup / Restore lebih aman dan dapat diandalkan seolah-olah ada yang salah (dalam kasus terburuk) maka setidaknya Anda memiliki cadangan untuk memulihkan dan memulihkan database Anda.
Seperti yang saya katakan, checksum baru dalam versi 2005 dan lebih tinggi. Ini adalah mekanisme di mana SQL Server akan mendeteksi kerusakan halaman terutama karena I / O. Lihat jawaban saya di sini untuk perincian lebih lanjut.
Untuk mengaktifkan CHECKSUM dan juga mengubah model pemulihan ke FULL, Anda dapat melakukannya menggunakan kode T-SQL di bawah ini:
Catatan: Setelah Anda mengatur opsi database, itu akan bertahan ketika Anda melakukan migrasi dari 2008R2 ke 2012.
Ya silahkan. Seperti yang saya katakan, pemulihan cadangan adalah metode yang disukai , kecuali jika Anda memiliki alasan yang kuat untuk tidak melakukannya.
Backup / restore mirip dengan dump dan load yang digunakan di Sybase, Oracle atau mungkin juga MySQL. Hanya SQL Server menyebutnya .. backup / restore.
A harus membaca: Memahami Backup Server SQL oleh Paul Randall.
Sintaks Sederhana (untuk BOL rujukan sintaksis lengkap ):
Kemudian restore dapat dilakukan pada server tujuan sebagai:
- dengan asumsi tata letak disk tujuan tidak cocok dengan server sumber
- dengan asumsi tata letak disk tujuan cocok dengan server sumber
backup / restore tidak akan mendefrag database Anda. Anda harus menggunakan Alter Index Reorganize atau Rebuild tergantung pada level fragmentasi Anda.
Karena Anda baru mengenal SQL Server, saya sangat menyarankan Anda untuk menggunakan Ola Hallengren:
Menghentikan mesin adalah hal terburuk yang dapat Anda lakukan untuk melakukan backup !!
Baca tautan Paul tentang cadangan yang saya sebutkan dan Gunakan skrip Ola. Microsoft memiliki artikel KB dengan skrip untuk melakukan pencadangan otomatis - Cara menjadwalkan dan mengotomatiskan pencadangan basis data SQL Server di SQL Server Express
Setiap database SQL Server memiliki log yang mencatat semua transaksi dan modifikasi database yang dibuat oleh setiap transaksi. Log transaksi adalah komponen penting dari setiap basis data.
Ekstensi konvensi penamaan yang biasa untuk log Transaksi adalah '.LDF', tetapi bisa berupa apa saja.
Saya tidak akan menulis lebih banyak tentang ini karena ini akan membuat jawabannya sangat miring. Lihat Manajemen Log Transaksi dan jawaban saya di sini juga memiliki tautan yang sangat baik.
EDIT: 8/24/2016 .. Ini akan membantu pembaca masa depan:
Jika Anda memigrasikan seluruh instance Anda dari satu versi ke versi lain, saya akan sangat menyarankan untuk menggunakan solusi berbasis PowerShell
Start-SqlMigration
sumber