Kiedy klon bazy danych jest tworzony przy użyciu DBCC CLONEDATABASE, utworzy schemat i tylko kopię statystyki określonej bazy danych i nie zawiera żadnej kopii danych.
Utworzenie klonu jest tak proste, jak przekazanie źródła nazwa bazy danych i sklonuj nazwę bazy danych do polecenia DBCC.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Wyjście polecenia DBCC
Po zakończeniu klonowania sklonowana baza danych będzie w trybie tylko do odczytu.
SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL', 'SansSQL_Clone')
Co się właściwie dzieje, gdy wydamy polecenie DBCC CLONEDATABASE w bazie danych?
Zacznie się od kilka walidacji przed utworzeniem klonu, Następujące walidacje są wykonywane przez DBCC CLONEDATABASE. Polecenie nie powiedzie się, jeśli którakolwiek z walidacji się nie powiedzie.
- Źródłowa baza danych musi być bazą danych użytkownika. Klonowanie systemowych baz danych (master, model, msdb, tempdb, dystrybucyjna baza danych itp.) jest niedozwolone.
- Źródłowa baza danych musi być online lub czytelna.
- Baza danych, która używa tej samej nazwy co baza danych klonu, nie może już istnieć.
- Polecenie nie znajduje się w transakcji użytkownika.
- Tworzenie podstawowego pliku danych i pliku dziennika
- Dodawanie dodatkowych przestrzeni danych
- Dodawanie plików pomocniczych
SELECT database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
Następnie DBCC CLONEDATABASE wykona migawkę wewnętrznej bazy danych z następującymi krokami
- Zweryfikuj źródłową bazę danych
- Pobierz S lock dla źródłowej bazy danych
- Utwórz zrzut źródłowej bazy danych
- Utwórz bazę danych klonów (jest to pusta baza danych, która dziedziczy z modelu)
- Pobierz blokadę X dla bazy danych klonów
- Skopiuj metadane do bazy danych klonów
- Zwolnij wszystkie blokady DB
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansSQL_CloneDB_CloneStatus
Odniesienie:https://support.microsoft.com/en-in/kb/3177838