Pencopotan dan lampirkan database (SQL Server)
Berlaku untuk: SQL Server
Data dan file log transaksi database dapat dilepas dan kemudian dipasang kembali ke instans SQL Server yang sama atau lain. Melepaskan dan melampirkan database berguna jika Anda ingin mengubah database ke instans SQL Server yang berbeda di komputer yang sama atau untuk memindahkan database.
Izin
Izin akses file diatur selama beberapa operasi database, termasuk melepaskan atau melampirkan database.
Penting
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 (Transact-SQL) pada database di server nonproduksi dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna, dalam database.
Melepas database
Melepaskan database menghapusnya dari instans SQL Server tetapi membiarkan database tetap utuh dalam file data dan file log transaksinya. File-file ini kemudian dapat digunakan untuk melampirkan database ke instans SQL Server apa pun, termasuk server tempat database dicopot.
Anda tidak dapat melepaskan database jika salah satu hal berikut ini benar:
Database direplikasi dan diterbitkan. Jika direplikasi, database harus tidak diterbitkan. Sebelum dapat mencopotnya, Anda harus menonaktifkan penerbitan dengan menjalankan sp_replicationdboption.
Catatan
Jika Anda tidak dapat menggunakan
sp_replicationdboption
, Anda dapat menghapus replikasi dengan menjalankan sp_removedbreplication.Rekam jepret database ada di database.
Sebelum dapat melepaskan database, Anda harus menghilangkan semua rekam jepretnya. Untuk informasi selengkapnya, lihat Menghilangkan Rekam Jepret Database (Transact-SQL).
Catatan
Rekam jepret database tidak dapat dilepas atau dilampirkan.
Database adalah bagian dari grup ketersediaan AlwaysOn.
Database tidak dapat dilepas hingga dihapus dari grup ketersediaan. Untuk informasi selengkapnya, lihat Menghapus database utama dari grup ketersediaan AlwaysOn.
Database sedang dicerminkan dalam sesi pencerminan database.
Database tidak dapat dilepaskan kecuali sesi dihentikan. Untuk informasi selengkapnya, lihat Menghapus Pencerminan Database (SQL Server).
Database adalah tersangka. Database tersangka tidak dapat dilepas; sebelum Anda dapat melepaskannya, Anda harus memasukkannya ke dalam mode darurat. Untuk informasi selengkapnya tentang cara memasukkan database ke mode darurat, lihat MENGUBAH DATABASE (Transact-SQL).
Database adalah database sistem.
Cadangkan, pulihkan, dan lepaskan
Melepaskan database baca-saja kehilangan informasi tentang basis diferensial cadangan diferensial. Untuk informasi selengkapnya, lihat Pencadangan diferensial (SQL Server).
Merespons kesalahan penghapusan
Kesalahan yang dihasilkan saat melepaskan database dapat mencegah database menutup dengan bersih dan log transaksi dibangun kembali. Jika Anda menerima pesan kesalahan, lakukan tindakan korektif berikut:
Memasang kembali semua file yang terkait dengan database, bukan hanya file utama.
Atasi masalah yang menyebabkan pesan kesalahan.
Lepaskan database lagi.
Melampirkan database
Anda dapat melampirkan database SQL Server yang disalin atau dilepas. Saat Anda melampirkan database SQL Server 2005 (9.x) yang berisi file katalog teks lengkap ke instans server SQL Server, file katalog dilampirkan dari lokasi sebelumnya bersama dengan file database lainnya, sama seperti di SQL Server 2005 (9.x). Untuk informasi selengkapnya, lihat Meningkatkan Pencarian Teks Lengkap.
Saat Anda melampirkan database, semua file data (.mdf
dan .ndf
file) harus tersedia. Jika ada file data yang memiliki jalur yang berbeda dari kapan database pertama kali dibuat atau terakhir dilampirkan, Anda harus menentukan jalur file saat ini.
Catatan
Jika file data utama yang dilampirkan bersifat baca-saja, Mesin Database mengasumsikan bahwa database bersifat baca-saja.
Ketika database terenkripsi pertama kali dilampirkan ke instans SQL Server, pemilik database harus membuka kunci master database (DMK) dengan menjalankan pernyataan berikut: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'
. Kami menyarankan agar Anda mengaktifkan dekripsi otomatis DMK dengan menjalankan pernyataan berikut: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER (Transact-SQL) dan ALTER MASTER KEY (Transact-SQL).
Persyaratan untuk melampirkan file log sebagian bergantung pada apakah database baca-tulis atau baca-saja, sebagai berikut:
Untuk database baca-tulis, Anda biasanya dapat melampirkan file log di lokasi baru. Namun, dalam beberapa kasus, memasang kembali database memerlukan file log yang ada. Oleh karena itu, penting untuk selalu menyimpan semua file log yang terlepas sampai database berhasil dilampirkan tanpa file tersebut.
Jika database baca-tulis memiliki satu file log dan Anda tidak menentukan lokasi baru untuk file log, operasi lampirkan akan terlihat di lokasi lama untuk file tersebut. Jika file log lama ditemukan, file tersebut digunakan terlepas dari apakah database dimatikan dengan bersih. Namun, jika file log lama tidak ditemukan, dan jika database dimatikan dengan bersih dan tidak memiliki rantai log aktif, operasi lampirkan mencoba membangun file log baru untuk database.
Jika file data utama yang dilampirkan bersifat baca-saja, Mesin Database mengasumsikan bahwa database bersifat baca-saja. Untuk database baca-saja, file log atau file harus tersedia di lokasi yang ditentukan dalam file utama database. File log baru tidak dapat dibuat karena SQL Server tidak dapat memperbarui lokasi log yang disimpan dalam file utama.
Perubahan metadata pada melampirkan database
Ketika database baca-saja dilepas dan kemudian dipasang kembali, informasi cadangan tentang basis diferensial saat ini hilang. Basis diferensial adalah cadangan lengkap terbaru dari semua data dalam database atau dalam subset file atau grup file database. Tanpa informasi cadangan dasar, master
database menjadi tidak disinkronkan dengan database baca-saja, sehingga cadangan diferensial yang diambil setelahnya mungkin memberikan hasil yang tidak terduga. Oleh karena itu, jika Anda menggunakan cadangan diferensial dengan database baca-saja, Anda harus membuat basis diferensial baru dengan mengambil cadangan penuh setelah Anda memasang kembali database. Untuk informasi tentang cadangan diferensial, lihat Pencadangan diferensial (SQL Server).
Pada lampirkan, startup database terjadi. Umumnya, melampirkan database menempatkannya dalam keadaan yang sama saat dilepas atau disalin. Namun, operasi lampirkan dan lepaskan keduanya menonaktifkan rantai kepemilikan lintas database untuk database. Untuk informasi tentang cara mengaktifkan penautan, lihat Opsi Konfigurasi Server rantai kepemilikan lintas db.
Penting
Secara default dan untuk keamanan, opsi untuk is_broker_enabled, is_honor_broker_priority_on, dan is_trustworthy_on diatur ke NONAKTIF setiap kali database dilampirkan. Untuk informasi tentang cara mengatur opsi ini, lihat ALTER DATABASE (Transact-SQL). Untuk informasi selengkapnya tentang metadata, lihat Mengelola Metadata Saat Membuat Database Tersedia di Server Lain.
Cadangkan, pulihkan, dan lampirkan
Seperti database apa pun yang sepenuhnya atau sebagian offline, database dengan memulihkan file tidak dapat dilampirkan. Jika Anda menghentikan urutan pemulihan, Anda bisa melampirkan database. Kemudian, Anda dapat memulai ulang urutan pemulihan.
Melampirkan database ke instans server lain
Penting
Database yang dibuat oleh versi SQL Server yang lebih baru tidak dapat dilampirkan di versi sebelumnya. Ini menghalangi database agar tidak digunakan secara fisik dengan versi Mesin Database yang lebih lama. Namun, ini berkaitan dengan status metadata dan tidak memengaruhi tingkat kompatibilitas database. Untuk informasi selengkapnya, lihat TINGKAT kompatibilitas ALTER DATABASE (Transact-SQL).
Untuk memberikan pengalaman yang konsisten kepada pengguna dan aplikasi, saat Anda melampirkan database ke instans server lain, Anda mungkin harus membuat ulang beberapa atau semua metadata untuk database pada instans server lainnya. Metadata ini mencakup seperti login dan pekerjaan. Untuk informasi selengkapnya, lihat Mengelola Metadata Saat Membuat Database Tersedia di Server Lain.
Tugas terkait
Tugas | Artikel |
---|---|
Melepas database | - sp_detach_db (T-SQL) - Melepas database |
Melampirkan database | - MEMBUAT DATABASE - Melampirkan Database - sp_attach_db (T-SQL) - sp_attach_single_file_db (T-SQL) |
Meningkatkan database menggunakan operasi lepaskan dan lampirkan | - Meningkatkan database menggunakan lepaskan dan lampirkan (Transact-SQL) |
Memindahkan database menggunakan operasi lepaskan dan lampirkan | - Memindahkan database menggunakan lepaskan dan lampirkan (Transact-SQL) |
Menghapus rekam jepret database | - Menghilangkan Rekam Jepret Database (Transact-SQL) |