Wenn ein Klon der Datenbank mit DBCC CLONEDATABASE erstellt wird, erstellt sie eine reine Schema- und Statistikkopie der angegebenen Datenbank und enthält keine Kopie der Daten.
Das Erstellen des Klons ist so einfach wie das Übergeben der Quelle Datenbankname und Klondatenbankname in den DBCC-Befehl.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Ausgabe des DBCC-Befehls
Sobald das Klonen abgeschlossen ist, befindet sich die geklonte Datenbank im schreibgeschützten Modus.
SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL ', 'SansSQL_Clone')
Was passiert also eigentlich, wenn wir den DBCC CLONEDATABASE-Befehl für eine Datenbank ausführen?
Es beginnt mit einige Überprüfungen, bevor der Klon erstellt wird. Die folgenden Überprüfungen werden von DBCC CLONEDATABASE durchgeführt. Der Befehl schlägt fehl, wenn eine der Validierungen fehlschlägt.
- Die Quelldatenbank muss eine Benutzerdatenbank sein. Das Klonen von Systemdatenbanken (master, model, msdb, tempdb, Distributionsdatenbank etc.) ist nicht erlaubt.
- Die Quelldatenbank muss online oder lesbar sein.
- Eine Datenbank, die denselben Namen wie die Klondatenbank verwendet, darf nicht bereits existieren.
- Der Befehl befindet sich nicht in einer Benutzertransaktion.
- Primäre Datendatei und Protokolldatei erstellen
- Sekundäre Datenräume hinzufügen
- Sekundäre Dateien hinzufügen
SELECT database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Dann erstellt DBCC CLONEDATABASE mit den folgenden Schritten einen Snapshot der internen Datenbank
- Quelldatenbank validieren
- S-Sperre für die Quelldatenbank abrufen
- Snapshot der Quelldatenbank erstellen
- Erstellen Sie eine Klondatenbank (dies ist eine leere Datenbank, die vom Modell erbt)
- X-Sperre für die Klondatenbank erhalten
- Kopieren Sie die Metadaten in die Klondatenbank
- Alle DB-Sperren aufheben
Referenz:https://support.microsoft.com/en-in/kb/3177838