Når en klon af databasen er oprettet ved hjælp af DBCC CLONEDATABASE, den vil kun oprette et skema og en statistikkopi af den angivne database og indeholder ingen kopi af dataene.
Oprettelse af klonen er lige så simpelt som at sende kilden. databasenavn og klondatabasenavn til DBCC-kommandoen.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Output af DBCC-kommandoen
Når kloningen er fuldført, vil den klonede database være i skrivebeskyttet tilstand.
VÆLG navn, database_id, er_skrivebeskyttet FRA sys.databases WHERE navn i ('SansSQL ', 'SansSQL_Clone')
Så hvad sker der egentlig, når vi udsteder kommandoen DBCC CLONEDATABASE på en database?
Det starter med få valideringer før klonen oprettes. Følgende valideringer udføres af DBCC CLONEDATABASE. Kommandoen mislykkes, hvis nogen af valideringerne mislykkes.
- Kildedatabasen skal være en brugerdatabase. Kloning af systemdatabaser (master, model, msdb, tempdb, distributionsdatabase osv.) er ikke tilladt.
- Kildedatabasen skal være online eller læselig.
- En database, der bruger samme navn som klondatabasen, må ikke allerede eksistere.
- Kommandoen er ikke i en brugertransaktion.
- Opretter primær datafil og logfil
- Tilføjelse af sekundære datarum
- Tilføjelse af sekundære filer
VÆLG database_id, fil_id, type_desc, navn, fysisk_navn FRA sys.master_files WHERE DB_NAME(database_id) i ('SansSQL', 'SansSQL_Clone')
Derefter vil DBCC CLONEDATABASE lave et internt databasesnapshot med følgende trin
- Valider kildedatabasen
- Få S-lås til kildedatabasen
- Opret et øjebliksbillede af kildedatabasen
- Opret en klondatabase (dette er en tom database, som arver fra modellen)
- Få X-lås til klondatabasen
- Kopiér metadataene til klondatabasen
- Slip alle DB-låse
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansDBSQLoneClone før>
Reference:https://support.microsoft.com/en-in/kb/3177838