Auch bei sehr großen Datenbanken (bis zu 64 TB) ermöglicht SQL Clone das schnelle Erstellen mehrerer Kopien, sodass komplette Datenbanken gleichzeitig in verschiedenen SQL Server-Instanzen für Entwicklung und Tests bereitstehen. Dabei belegt jede dieser geklonten Datenbanken nur wenige Dutzend Megabyte und ist in Sekunden erstellt, nicht in Stunden. Wie das funktioniert? Keine Magie, sondern effiziente Nutzung der integrierten Festplattenvirtualisierung in Windows.
Die Basis von SQL Clone bilden zwei zentrale Konzepte: Images und Klone.
Ein Image ist eine Momentaufnahme Ihrer Quell-SQL Server-Datenbank. Es kann entweder aus Sicherungsdateien (vollständig und differenziell) oder direkt aus einer laufenden SQL Server-Datenbank erzeugt werden.
SQL Clone erstellt ein Image, indem zunächst eine virtuelle Festplatte (VHD) angelegt und anschließend die MDF-Dateien (Daten und Schema) sowie die LDF-Datei (Transaktionsprotokoll) darauf kopiert werden. Bei der Erstellung aus einer laufenden Datenbank nutzt SQL Clone den Volumeschattenkopie-Dienst von Windows, um eine konsistente Momentaufnahme der Dateien zu erzeugen. Wird das Image stattdessen aus Sicherungsdateien erstellt (z.B. aus einer SQL Server-Sicherung oder einer Redgate SQL Backup-Datei) erfolgt die Erstellung durch Wiederherstellung der Sicherung. Ein Image ist nach der Erstellung schreibgeschützt und bleibt unverändert.
Ein Klon ist eine isolierte Kopie einer Datenbank, die aus einem Image erstellt wird. Aus einem einzigen Image lassen sich beliebig viele Klone erzeugen. Für jeden Klon legt SQL Clone auf der lokalen Instanz eine eigene VHD an (den sog. Differenzierungsdatenträger) und verknüpft ihn mit dem zugrunde liegenden Image. Dadurch greifen alle Klone auf die Daten des Images zu, während lokal nur die Änderungen gespeichert werden, die in der jeweiligen Klondatenbank vorgenommen wurden.
Sobald Sie eine Änderung in einem Klon vornehmen, schreibt SQL Server diese auf den Differenzierungsdatenträger. Jede Änderung betrifft ausschließlich den jeweiligen Klon und bleibt vom ursprünglichen Image vollständig getrennt. Beim Lesen von Daten stellt das Betriebssystem die benötigten Seiten dynamisch aus dem Differenzierungsdatenträger und den Dateien im Image zusammen. Für SQL Server sieht der Klon dabei aus wie eine ganz normale Datenbank.
SQL Clone nutzt das VHDX-Format (.vhdx), das unter Windows 8, Windows Server 2012 und neueren Versionen als Standardformat für virtuelle Festplatten verwendet wird. Es unterstützt Festplattengrößen von bis zu 64 TB. Erkennt SQL Clone ein entsprechendes Betriebssystem auf dem Host, wird automatisch VHDX verwendet und das Erstellen großer Klone bis 64 TB ermöglicht. Andernfalls greift SQL Clone auf das ältere VHD-Format (.vhd) zurück, das auf 2 TB beschränkt ist.
Wenn Sie eine große Datenbank auf zehn verschiedenen SQL Server-Instanzen für Entwicklung und Tests bereitstellen möchten, müssten Sie diese mit herkömmlichen Methoden zehnmal kopieren. Mit SQL Clone genügt ein einziger Kopiervorgang: Die Quelldatenbank wird einmal als Image angelegt. Anschließend ermöglicht die eingesetzte Storage-Virtualisierung, dass beliebig viele Klone dieses Images erstellt werden können, und zwar unabhängig von der ursprünglichen Datenbankgröße. So lassen sich Klone in Sekunden bereitstellen.