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:
- skrip login kami di server 2000 menggunakan sp_help_revlogin .
- Script out jobs dan server tertaut dari sql 2000 server.
- hentikan server web yang terhubung ke 2000 server. Pastikan tidak ada aplikasi yang terhubung ke server 2000.
- backup database Anda dan pulihkan pada tujuan sql 2008 R2 server. (catatan: Jangan lepaskan / pasang karena ada yang salah dan Anda akan berakhir dengan database terpisah dan tidak ada cadangan!)
- Setelah cadangan Anda dipulihkan pada server R2 2008, jalankan output dari sp_help_revlogin pada server 2008 R2 untuk membuat ulang login.
- Sinkronkan pengguna yatim piatu (Jika ada) dan buat kembali pekerjaan agen sql dan server yang ditautkan pada server baru.
- ubah tingkat kompatibilitas pada database yang dipulihkan menjadi 100.
- Dbcc checkdb dengan opsi all_errormsgs dan data_purity dihidupkan:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
- jalankan DBCC UPDATEUSAGE pada database yang dipulihkan
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
- Perbarui statistik pada semua tabel dengan pemindaian penuh:
Update Statistics table_name with FULLSCAN
- Opsional: Periksa level fragmentasi dan tergantung pada level fragmentasi, jalankan reorg / rekondisi semua Indeks. Anda dapat menggunakan skrip Ola .
- Kompilasi ulang semua SP yang digunakan
sp_recompile 'procedureName'
- Segarkan pandangan Anda
SP_REFRESHVIEW view_name
- pastikan untuk mengubah opsi basis data: halaman verifikasi ke CHECKSUM.
- Ubah model pemulihan (jika berbeda dari sql 2000) ke FULL. Jika Anda berubah menjadi model pemulihan LENGKAP, PASTIKAN Anda melakukan pencadangan Log Transaksi. Ini akan membantu Anda memulihkan point-in-time dan juga tidak mengasapi T-Log Anda.
Di SQL Server 2005 dan lebih tinggi, Database Mail diperkenalkan. Jadi, Anda harus bermigrasi dari SQLMail ke Database Mail.
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
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:
- nyalakan Inisialisasi File Instan di server baru.
- Memiliki beberapa file data tempdb dengan ukuran yang sama.
- Aktifkan Bendera Jejak 1118
- Konfigurasikan maks dan min memori dengan benar. Terutama memori Max jauh dari default.
- Sesuaikan pengaturan MAXDOP dengan benar. Lihat /dba//a/36578/8783 untuk lebih jelasnya.
- Yang terbaik adalah menginstal sp_Blitz dari Brent Ozar. Jalankan dan atasi masalah-masalah kritis dan prioritas tinggi yang dilaporkan olehnya.
- Anda bahkan dapat menggunakan SQL Power Doc dari kendalvandyke - SQL Power Doc bekerja dengan semua versi SQL Server dari SQL Server 2000 hingga 2012, dan semua versi Windows Server dan sistem operasi Windows konsumen dari Windows 2000 dan Windows XP melalui Windows Server 2012 dan Windows 8. Juga berguna untuk merencanakan peningkatan - lihat fitur tersembunyi apa yang digunakan pada sebuah instance.
- Aktifkan Optimalkan untuk beban kerja ad-hoc dan opsi kompresi cadangan default.
Mari kita jawab pertanyaan Anda ...
Apa lagi yang harus saya lakukan untuk menyelesaikan migrasi?
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.
gunakan fitur baru seperti checksumming dan model pemulihan penuh.
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.
membuat database ini persis seperti yang dibuat di SQL Server 2008 R2.
membuat database ini sepenuhnya kompatibel, benar dan sangat cocok untuk mesin database SQL 2008 R2 baru.
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.
Saya hanya ingin tahu bagaimana cara benar dan sepenuhnya mengkonversi database SQL Server 2000 lama ke database 2008 R2 baru, tenang bahwa semuanya dilakukan dengan benar dan senang dengan semua fitur baru.
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:
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.
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.
Tentang checksumming dan model pemulihan penuh: tidak tersedia / diaktifkan pada SQL Server 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.
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:
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
Catatan: Setelah Anda mengatur opsi database, itu akan bertahan ketika Anda melakukan migrasi dari 2008R2 ke 2012.
Saya sedang bersiap-siap untuk memigrasi database ini ke SQL Server 2012 - jadi pertama dari 2000 hingga 2008 R2, sekarang dari 2008 R2 hingga 2012 (tidak mungkin untuk melakukan ini secara langsung karena kurangnya dukungan 2000 database dalam SQL Server 2012). Jadi saya mengerti bahwa saya harus mengikuti panduan Anda: backup di 2008 R2 dan restore pada 2012, lalu lakukan sisa tips Anda, kan?
Ya silahkan. Seperti yang saya katakan, pemulihan cadangan adalah metode yang disukai , kecuali jika Anda memiliki alasan yang kuat untuk tidak melakukannya.
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?
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 ):
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
Kemudian restore dapat dilakukan pada server tujuan sebagai:
- dengan asumsi tata letak disk tujuan tidak cocok dengan server sumber
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10
- dengan asumsi tata letak disk tujuan cocok dengan server sumber
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
Akankah metode ini dengan cara "defragment" database saya? Jika tidak, bagaimana cara defrag / mengoptimalkannya secara manual?
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:
Karena kami menggunakan SQL Server 2000 Express selama bertahun-tahun (tanpa antarmuka manajemen), kami melakukan pencadangan hanya dengan menghentikan engine dan RAR direktori DATA. Untuk saat ini, seperti kita di SQL Server 2008, bukankah ini masih lebih baik daripada menggunakan fungsi cadangan di Management Studio?
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
Mode pemulihan penuh dengan cadangan log Transaksi yang sering - Di mana log Transaksi disimpan - apakah ini file LDF? Bagaimana saya bisa mencadangkannya dengan benar?
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 PowerShellStart-SqlMigration