Meningkatkan database menggunakan lepaskan dan lampirkan (Transact-SQL)

Berlaku untuk:SQL Server

Topik ini menjelaskan cara menggunakan operasi lepaskan dan lampirkan untuk meningkatkan database di SQL Server. Setelah dilampirkan ke SQL Server, database segera tersedia dan ditingkatkan secara otomatis. Ini mencegah database digunakan dengan versi Mesin Database yang lebih lama. Namun, peningkatan metadata tidak memengaruhi pengaturan tingkat kompatibilitas database database. Lihat informasi selengkapnya di Tingkat Kompatibilitas Database Setelah Peningkatan nanti dalam topik ini.

Dalam topik ini

Sebelum Anda mulai

Batasan dan Pembatasan

  • Database sistem tidak dapat dilampirkan.

  • Lampirkan dan lepaskan nonaktifkan rantai kepemilikan lintas database untuk database dengan mengatur opsi rantai kepemilikan lintas db-nya ke 0. Untuk informasi tentang mengaktifkan penautan, lihat Opsi Konfigurasi Server rantai kepemilikan lintas db.

  • Saat melampirkan database yang direplikasi yang disalin alih-alih dilepas:

    • Jika Anda melampirkan database ke versi yang ditingkatkan dari instans server yang sama, Anda harus menjalankan sp_vupgrade_replication untuk meningkatkan replikasi setelah operasi lampirkan selesai. Untuk informasi selengkapnya, lihat sp_vupgrade_replication (Transact-SQL).

    • Jika Anda melampirkan database ke instans server yang berbeda (terlepas dari versinya), Anda harus menjalankan sp_removedbreplication untuk menghapus replikasi setelah operasi lampirkan selesai. Untuk informasi selengkapnya, lihat sp_removedbreplication (Transact-SQL).

Rekomendasi

Kami menyarankan agar Anda tidak melampirkan atau memulihkan database dari sumber yang tidak diketahui atau tidak tepercaya. Database tersebut dapat berisi kode berbahaya yang mungkin menjalankan kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema atau struktur database fisik. Sebelum Anda menggunakan database dari sumber yang tidak diketahui atau tidak tepercaya, jalankan DBCC CHECKDB pada database di server nonproduksi dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna, dalam database.

Untuk Meningkatkan Database dengan Menggunakan Lepaskan dan Lampirkan

  1. Lepaskan database. Untuk informasi selengkapnya, lihat Mencopot Database.

  2. Secara opsional, pindahkan file atau file database yang dilepas dan file log atau file.

    Anda harus memindahkan file log bersama dengan file data, bahkan jika Anda ingin membuat file log baru. Dalam beberapa kasus, memasang kembali database memerlukan file log yang ada. Oleh karena itu, selalu simpan semua file log yang dilepas hingga database berhasil dilampirkan tanpa file tersebut.

    Catatan

    Jika Anda mencoba melampirkan database tanpa menentukan file log, operasi lampirkan akan mencari file log di lokasi aslinya. Jika salinan asli log masih ada di lokasi tersebut, salinan tersebut akan dilampirkan. Untuk menghindari penggunaan file log asli, tentukan jalur file log baru atau hapus salinan asli file log (setelah menyalinnya ke lokasi baru).

  3. Lampirkan file yang disalin ke instans SQL Server. Untuk informasi selengkapnya, lihat Melampirkan Database.

Contoh

Contoh berikut meningkatkan salinan database dari versi SQL Server yang lebih lama. Pernyataan Transact-SQL dijalankan di jendela Editor Kueri yang terhubung ke instans server yang dilampirkan.

  1. Lepaskan database dengan menjalankan pernyataan Transact-SQL berikut:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Dengan menggunakan metode pilihan Anda, salin data dan file log ke lokasi baru.

    Penting

    Untuk database produksi, sebaiknya tempatkan database dan log transaksi pada disk terpisah. Ini mendorong persyaratan I/O dan pertumbuhan file yang berbeda dan dianggap sebagai praktik terbaik untuk memisahkannya.

    Untuk menyalin file melalui jaringan ke disk pada komputer jarak jauh, gunakan nama konvensi penamaan universal (UNC) dari lokasi jarak jauh. Nama UNC mengambil formulir \\Servername\Sharename\Path\Filename. Seperti halnya menulis file ke hard disk lokal, izin yang sesuai yang diperlukan untuk membaca atau menulis ke file pada disk jarak jauh harus diberikan ke akun pengguna yang digunakan oleh instans SQL Server.

  3. Lampirkan database yang dipindahkan dan, secara opsional, lognya dengan menjalankan pernyataan Transact-SQL berikut:

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    Di SQL Server Management Studio, database yang baru dilampirkan tidak segera terlihat di Object Explorer. Untuk menampilkan database, di Object Explorer, klik Tampilkan, lalu Refresh. Saat simpul Database diperluas di Object Explorer, database yang baru dilampirkan sekarang muncul dalam daftar database.

Tindak Lanjut: Setelah Memutakhirkan Database SQL Server

Jika database memiliki indeks teks lengkap, proses peningkatan baik mengimpor, mengatur ulang, atau membangunnya kembali, tergantung pada pengaturan properti server upgrade_option . Jika opsi peningkatan diatur untuk mengimpor (upgrade_option = 2) atau membangun kembali (upgrade_option = 0), indeks teks lengkap tidak akan tersedia selama peningkatan. Bergantung pada jumlah data yang diindeks, impor dapat memakan waktu beberapa jam, dan pembangunan ulang dapat memakan waktu hingga sepuluh kali lebih lama. Perhatikan juga bahwa ketika opsi peningkatan diatur ke impor, indeks teks lengkap terkait dibangun kembali jika katalog teks lengkap tidak tersedia. Untuk mengubah pengaturan properti server upgrade_option , gunakan sp_fulltext_service.

Tingkat Kompatibilitas Database Setelah Peningkatan

Setelah peningkatan, tingkat kompatibilitas database tetap pada tingkat kompatibilitas sebelum peningkatan, kecuali tingkat kompatibilitas sebelumnya tidak didukung pada versi baru. Dalam hal ini, tingkat kompatibilitas database yang ditingkatkan diatur ke tingkat kompatibilitas terendah yang didukung.

Misalnya, jika Anda melampirkan database yang merupakan tingkat kompatibilitas 90 sebelum melampirkannya ke instans SQL Server 2019 (15.x), setelah peningkatan tingkat kompatibilitas diatur ke 100, yang merupakan tingkat kompatibilitas terendah yang didukung di SQL Server 2019 (15.x). Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE (Transact-SQL).

Mengelola Metadata pada Instans Server yang Ditingkatkan

Saat Anda melampirkan database ke instans server lain, untuk memberikan pengalaman yang konsisten kepada pengguna dan aplikasi, Anda mungkin harus membuat ulang beberapa atau semua metadata untuk database, seperti login, pekerjaan, dan izin, pada instans server lainnya. Untuk informasi selengkapnya, lihat Mengelola Metadata Saat Membuat Database Tersedia di Instans Server Lain (SQL Server).

Perubahan Kunci Master Layanan dan Enkripsi Kunci Master Database dari 3DES ke AES

SQL Server 2012 (11.x) dan versi yang lebih tinggi menggunakan algoritma enkripsi AES untuk melindungi kunci master layanan (SMK) dan kunci master database (DMK). AES adalah algoritma enkripsi yang lebih baru dari 3DES yang digunakan dalam versi sebelumnya. Ketika database pertama kali dilampirkan atau dipulihkan ke instans baru SQL Server, salinan kunci master database (dienkripsi oleh kunci master layanan) belum disimpan di server. Anda harus menggunakan OPEN MASTER KEY pernyataan untuk mendekripsi kunci master database (DMK). Setelah DMK didekripsi, Anda memiliki opsi untuk mengaktifkan dekripsi otomatis di masa depan dengan menggunakan ALTER MASTER KEY REGENERATE pernyataan untuk menyediakan server dengan salinan DMK, dienkripsi dengan kunci master layanan (SMK). Ketika database telah ditingkatkan dari versi yang lebih lama, DMK harus diregenerasi untuk menggunakan algoritma AES yang lebih baru. Untuk informasi selengkapnya tentang meregenerasi DMK, lihat MENGUBAH KUNCI MASTER (Transact-SQL). Waktu yang diperlukan untuk meregenerasi kunci DMK untuk meningkatkan ke AES tergantung pada jumlah objek yang dilindungi oleh DMK. Meregenerasi kunci DMK untuk meningkatkan ke AES hanya diperlukan sekali, dan tidak berdampak pada regenerasi di masa mendatang sebagai bagian dari strategi rotasi kunci.