Při klonu databáze je vytvořena pomocí DBCC CLONEDATABASE, vytvoří pouze kopii schématu a statistiky zadané databáze a neobsahuje žádnou kopii dat.
Vytvoření klonu je stejně jednoduché jako předání zdroje název databáze a název databáze naklonovat do příkazu DBCC.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Výstup příkazu DBCC
Po dokončení klonování bude klonovaná databáze v režimu pouze pro čtení.
SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL ', 'SansSQL_Clone')
Co se tedy vlastně stane, když v databázi zadáme příkaz DBCC CLONEDATABASE?
Začne to několik validací před vytvořením klonu. Následující validace jsou prováděny pomocí DBCC CLONEDATABASE. Příkaz selže, pokud selže některá z ověření.
- Zdrojová databáze musí být uživatelská databáze. Klonování systémových databází (master, model, msdb, tempdb, distribuční databáze atd.) není povoleno.
- Zdrojová databáze musí být online nebo čitelná.
- Databáze, která používá stejný název jako databáze klonů, ještě nesmí existovat.
- Příkaz není součástí uživatelské transakce.
- Vytvoření primárního datového souboru a souboru protokolu
- Přidání sekundárních datových prostorů
- Přidání sekundárních souborů
SELECT database_id, file_id, type_desc, name, Physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Poté DBCC CLOENDATABASE provede snímek interní databáze podle následujících kroků
- Ověřte zdrojovou databázi
- Získejte S lock pro zdrojovou databázi
- Vytvořte snímek zdrojové databáze
- Vytvořte klonovou databázi (toto je prázdná databáze, která dědí z modelu)
- Získejte zámek X pro databázi klonů
- Zkopírujte metadata do databáze klonů
- Uvolněte všechny zámky DB
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansSQL_CloneDB_CloneStatus
Odkaz:https://support.microsoft.com/en-in/kb/3177838