sql >> Database teknologi >  >> RDS >> Sqlserver

Brug af DBCC CLONEDATABASE til at generere et skema og kun en statistikkopi af en brugerdatabase i SQL Server 2014 SP2

DBCC CLONEDATABASE er en ny DBCC-kommando introduceret i SQL Server 2014 SP 2, som bruges til at skabe klonen af ​​en specificeret brugerdatabase, som hjælper med at fejlfinde ydeevneproblemerne i forbindelse med forespørgselsoptimeringsværktøjet.

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.
Hvis alle valideringer lykkes, vil DBCC CLONEDATABASE udføre følgende operationer:
  • Opretter primær datafil og logfil
  • Tilføjelse af sekundære datarum
  • Tilføjelse af sekundære filer
Destinationsdatabasefilerne vil arve indstillingerne for størrelse og vækst fra modeldatabasen, og destinationsdatabasens filnavne vil følge konventionen for source_file_name _underscore_random_number.
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
Ved at bruge nedenstående kommando kan vi kontrollere, om en database er en klon eller en normal database.
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
  1. Indsæt i fra CTE

  2. Vælg fra tabel ved kun at kende dato uden tid (ORACLE)

  3. 10 tidsbesparende tips til MS Access-brugere

  4. Introduktion til FORALL-erklæring i Oracle-databasen