Ketika mengkloning database dibuat menggunakan DBCC CLONEDATABASE, itu akan membuat skema dan statistik hanya salinan dari database yang ditentukan dan tidak berisi salinan data.
Membuat klon semudah melewati sumber nama database dan mengkloning nama database ke perintah DBCC.
DBCC CLOENDATABASE ('SansSQL', 'SansSQL_Clone')
Keluaran dari Perintah DBCC
Setelah kloning selesai, database kloning akan berada dalam mode Hanya-Baca.
PILIH nama, database_id, is_read_only FROM sys.databases MANA nama di ('SansSQL ', 'SansSQL_Clone')
Jadi apa yang sebenarnya terjadi ketika kita mengeluarkan perintah DBCC CLOENDATABASE pada database?
Ini akan dimulai dengan beberapa validasi sebelum klon dibuat, Validasi berikut dilakukan oleh DBCC CLOENDATABASE. Perintah gagal jika salah satu validasi gagal.
- Database sumber harus berupa database pengguna. Kloning database sistem (master, model, msdb, tempdb, database distribusi, dll.) tidak diizinkan.
- Basis data sumber harus online atau dapat dibaca.
- Basis data yang menggunakan nama yang sama dengan basis data kloning tidak boleh ada.
- Perintah tidak ada dalam transaksi pengguna.
- Membuat file data primer dan file log
- Menambahkan ruang data sekunder
- Menambahkan file sekunder
PILIH database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Kemudian DBCC CLOENDATABASE akan melakukan Internal Database Snapshot dengan langkah-langkah berikut
- Validasi basis data sumber
- Dapatkan kunci S untuk database sumber
- Buat snapshot dari database sumber
- Buat database klon (ini adalah database kosong yang diturunkan dari model)
- Dapatkan kunci X untuk basis data kloning
- Salin metadata ke database kloning
- Lepaskan semua kunci DB
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansSQL_CloneDB_CloneStatus
Referensi:https://support.microsoft.com/en-in/kb/3177838