Quando un clone del database viene creato utilizzando DBCC CLONEDATABASE, creerà solo una copia dello schema e delle statistiche del database specificato e non contiene alcuna copia dei dati.
Creare il clone è semplice come passare l'origine nome del database e clonare il nome del database nel comando DBCC.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Output del comando DBCC
Una volta completata la clonazione, il database clonato sarà in modalità di sola lettura.
/>
SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL', 'SansSQL_Clone')
Quindi cosa succede effettivamente quando emettiamo il comando DBCC CLONEDATABASE su un database?
Inizierà con alcune convalide prima della creazione del clone, le seguenti convalide vengono eseguite da DBCC CLONEDATABASE. Il comando non riesce se una qualsiasi delle convalide fallisce.
- Il database di origine deve essere un database utente. La clonazione dei database di sistema (master, modello, msdb, tempdb, database di distribuzione ecc.) non è consentita.
- Il database di origine deve essere online o leggibile.
- Un database che utilizza lo stesso nome del database clone non deve esistere già.
- Il comando non è in una transazione utente.
- Creazione di file di dati primari e file di registro
- Aggiunta di spazi dati secondari
- Aggiunta di file secondari
SELECT database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Quindi DBCC CLONEDATABASE eseguirà uno snapshot del database interno con i seguenti passaggi
- Convalida il database di origine
- Ottieni S lock per il database di origine
- Crea uno snapshot del database di origine
- Crea un database clone (questo è un database vuoto che eredita dal modello)
- Ottieni il blocco X per il database dei cloni
- Copia i metadati nel database dei cloni
- Rilascia tutti i blocchi DB
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansSQL_CloneDB_CloneStatus
Riferimento:https://support.microsoft.com/en-in/kb/3177838