sp_attach_db (T-SQL)

Berlaku untuk:SQL Server

Melampirkan database ke server.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami sarankan Anda menggunakan CREATE DATABASE <database_name> FOR ATTACH sebagai gantinya. Untuk mengetahui informasi selengkapnya, lihat CREATE DATABASE. Untuk membangun kembali beberapa file log ketika satu atau beberapa file memiliki lokasi baru, gunakan CREATE DATABASE <database_name> FOR ATTACH_REBUILD_LOG.

Jangan lampirkan atau pulihkan 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.

Sintaks

sp_attach_db
    [ @dbname = ] N'dbname'
    , [ { @filename1 ... @filename16 } = ] { N'*filename1*' ... N'*filename16*' }
[ ; ]

Argumen

[ @dbname = ] N'dbname'

Nama database yang akan dilampirkan ke server. @dbname adalah sysname, tanpa default.

[ { @filename1 ... @filename16 } = ] { N'filename1' ... N'filename16' }

Nama fisik, termasuk jalur, file database. Parameter ini adalah nvarchar(260), dengan default NULL. Anda dapat menentukan hingga 16 nama file. Nama parameter dimulai pada @filename1 dan kenaikan ke @filename16. Daftar nama file harus menyertakan setidaknya file utama (.mdf). File utama berisi tabel sistem yang menunjuk ke file lain dalam database. Daftar juga harus menyertakan file apa pun yang dipindahkan setelah database dicopot.

Parameter ini memetakan ke FILENAME parameter CREATE DATABASE pernyataan. Untuk mengetahui informasi selengkapnya, lihat CREATE DATABASE.

Catatan

Saat Anda melampirkan database SQL Server 2005 (9.x) yang berisi file katalog teks lengkap ke versi SQL Server yang lebih baru, 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.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Tataan hasil

Tidak ada.

Keterangan

Prosedur sp_attach_db tersimpan hanya boleh dijalankan pada database yang sebelumnya dilepas dari server database dengan menggunakan operasi eksplisit sp_detach_db atau pada database yang disalin. Jika Anda harus menentukan lebih dari 16 file, gunakan CREATE DATABASE <database_name> FOR ATTACH atau CREATE DATABASE <database_name> FOR_ATTACH_REBUILD_LOG. Untuk mengetahui informasi selengkapnya, lihat CREATE DATABASE.

Setiap file yang tidak ditentukan diasumsikan berada di lokasi terakhir yang diketahui. Untuk menggunakan file di lokasi lain, Anda harus menentukan lokasi baru.

Database yang dibuat oleh versi SQL Server yang lebih baru tidak dapat dilampirkan di versi sebelumnya.

Catatan

Rekam jepret database tidak dapat dilepas atau dilampirkan.

Saat Anda melampirkan database yang direplikasi yang disalin alih-alih dilepas, pertimbangkan kondisi berikut:

  • Jika Anda melampirkan database ke instans server dan versi yang sama dengan database asli, tidak ada langkah lebih lanjut yang diperlukan.

  • Jika Anda melampirkan database ke instans server yang sama tetapi dengan versi yang ditingkatkan, Anda harus menjalankan sp_vupgrade_replication untuk meningkatkan replikasi setelah operasi lampirkan selesai.

  • Jika Anda melampirkan database ke instans server yang berbeda, terlepas dari versinya, Anda harus menjalankan sp_removedbreplication untuk menghapus replikasi setelah operasi lampirkan selesai.

Ketika database pertama kali dilampirkan atau dipulihkan ke instans baru SQL Server, salinan kunci master database (DMK) - dienkripsi oleh kunci master layanan (SMK) - belum disimpan di server. Anda harus menggunakan OPEN MASTER KEY pernyataan untuk mendekripsi DMK. Setelah DMK didekripsi, Anda memiliki opsi untuk mengaktifkan dekripsi otomatis di masa mendatang dengan menggunakan ALTER MASTER KEY REGENERATE pernyataan untuk menyediakan salinan DMK kepada server, yang dienkripsi dengan SMK. Ketika database 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 berpengaruh pada regenerasi di masa mendatang sebagai bagian dari strategi rotasi kunci.

Izin

Untuk informasi tentang bagaimana izin ditangani saat database dilampirkan, lihat MEMBUAT DATABASE.

Contoh

Contoh berikut melampirkan file dari AdventureWorks2022 ke server saat ini.

EXEC sp_attach_db @dbname = N'AdventureWorks2022',
    @filename1 =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf',
    @filename2 =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf';