Memindahkan database menggunakan lepaskan dan lampirkan (Transact-SQL)
Berlaku untuk: SQL Server
Topik ini menjelaskan cara memindahkan database yang dilepas ke lokasi lain dan melampirkannya kembali ke instans server yang sama atau berbeda di SQL Server. Namun, kami sarankan Anda memindahkan database dengan menggunakan prosedur relokasi yang direncanakan ALTER DATABASE, alih-alih menggunakan lepaskan dan lampirkan. Untuk informasi selengkapnya, lihat Memindahkan Database Pengguna.
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 pada database di server nonproduksi dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna, dalam database.
Prosedur
Untuk memindahkan database dengan menggunakan lepaskan dan lampirkan
Lepaskan database. Untuk informasi selengkapnya, lihat Mencopot Database.
Di jendela Windows Explorer atau Windows Command Prompt, pindahkan file atau file database yang dilepas dan file log atau file ke lokasi baru.
Anda harus memindahkan file log 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 log masih ada di lokasi asli, 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).
Lampirkan file yang disalin. Untuk informasi selengkapnya, lihat Melampirkan Database.
Contoh
Contoh berikut membuat salinan database AdventureWorks2022 bernama MyAdventureWorks
. Pernyataan Transact-SQL dijalankan di jendela Editor Kueri yang terhubung ke instans server yang dilampirkan.
Lepaskan database AdventureWorks2022 dengan menjalankan pernyataan Transact-SQL berikut:
USE master; GO EXEC sp_detach_db @dbname = N'AdventureWorks2022'; GO
Dengan menggunakan metode pilihan Anda, salin file database (AdventureWorks208R2_Data.mdf dan AdventureWorks208R2_log) ke: C:\MySQLServer\AdventureWorks208R2_Data.mdf dan C:\MySQLServer\AdventureWorks208R2_Log.ldf, masing-masing.
Penting
Untuk database produksi, tempatkan database dan log transaksi pada disk terpisah.
Untuk menyalin file melalui jaringan ke disk pada komputer jarak jauh, gunakan nama konvensi penamaan universal (UNC) dari lokasi jarak jauh. Nama UNC mengambil nama 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.
Lampirkan database yang dipindahkan dan, secara opsional, lognya dengan menjalankan pernyataan Transact-SQL berikut:
USE master; GO CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks2022_Log.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.