När en klon av databasen skapas med DBCC CLONEDATABASE, den kommer att skapa ett schema och endast en statistikkopia av den angivna databasen och innehåller ingen kopia av data.
Att skapa klonen är lika enkelt som att skicka källan databasnamn och klondatabasnamn till DBCC-kommandot.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Utmatning av DBCC-kommandot
När kloningen är klar kommer den klonade databasen att vara i skrivskyddat läge.
VÄLJ namn, databas_id, är_skrivskyddad FRÅN sys.databases WHERE namn i ('SansSQL ', 'SansSQL_Clone')
Så vad händer egentligen när vi utfärdar kommandot DBCC CLONEDATABASE på en databas?
Det börjar med några valideringar innan klonen skapas. Följande valideringar utförs av DBCC CLONEDATABASE. Kommandot misslyckas om någon av valideringarna misslyckas.
- Källdatabasen måste vara en användardatabas. Kloning av systemdatabaser (master, modell, msdb, tempdb, distributionsdatabas etc.) är inte tillåten.
- Källdatabasen måste vara online eller läsbar.
- En databas som använder samma namn som klondatabasen får inte redan existera.
- Kommandot finns inte i en användartransaktion.
- Skapar primär datafil och loggfil
- Lägga till sekundära datautrymmen
- Lägger till sekundära filer
VÄLJ database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Då kommer DBCC CLONEDATABASE att göra en ögonblicksbild av intern databas med följande steg
- Verifiera källdatabasen
- Hämta S-lås för källdatabasen
- Skapa ögonblicksbild av källdatabasen
- Skapa en klondatabas (detta är en tom databas som ärver från modellen)
- Hämta X-lås för klondatabasen
- Kopiera metadata till klondatabasen
- Släpp alla DB-lås
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansDBSQLoneStatus före>
Referens:https://support.microsoft.com/en-in/kb/3177838