Когато клониране на базата данни е създадена с помощта на DBCC CLONEDATABASE, тя ще създаде копие само за схема и статистика на посочената база данни и не съдържа никакво копие на данните.
Създаването на клонинга е толкова просто, колкото предаването на източника име на база данни и име на база данни за клониране към командата DBCC.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
Изход на командата DBCC
След като клонирането приключи, клонираната база данни ще бъде в режим само за четене.
ИЗБЕРЕТЕ име, database_id, is_read_only FROM sys.databases WHERE име в ('SansSQL ', 'SansSQL_Clone')
И какво всъщност се случва, когато издадем командата DBCC CLONEDATABASE в база данни?
Тя ще започне с няколко валидации преди създаването на клонинга. Следните проверки се извършват от DBCC CLONEDATABASE. Командата е неуспешна, ако някоя от проверките не успее.
- Изходната база данни трябва да е потребителска база данни. Клонирането на системни бази данни (главна, модел, msdb, tempdb, база данни за разпространение и т.н.) не е разрешено.
- Изходната база данни трябва да е онлайн или четивна.
- База данни, която използва същото име като клонираната база данни, не трябва вече да съществува.
- Командата не е в потребителска транзакция.
- Създаване на основен файл с данни и регистрационен файл
- Добавяне на вторични пространства за данни
- Добавяне на вторични файлове
ИЗБЕРЕТЕ идентификатор на база данни, идентификатор на файл, type_desc, име, физическо_име ОТ sys.master_files КЪДЕТО DB_NAME(database_id) в ('SansSQL', 'SansSQL_Clone')
След това DBCC CLONEDATABASE ще направи моментна снимка на вътрешна база данни със следните стъпки
- Проверете изходната база данни
- Получете S заключване за изходната база данни
- Създайте моментна снимка на изходната база данни
- Създайте клонирана база данни (това е празна база данни, която се наследява от модела)
- Вземете X заключване за клонираната база данни
- Копирайте метаданните в клонираната база данни
- Освободете всички заключвания на DB
SELECT DATABASEPROPERTYEX('SansSQL','isClone') КАТО SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone_Clone') КАТО SansloneSQT_C предварително>
Справка:https://support.microsoft.com/en-in/kb/3177838