Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използване на DBCC CLONEDATABASE за генериране на схема и статистически копие само на потребителска база данни в SQL Server 2014 SP2

DBCC CLONEDATABASE е нова команда DBCC, въведена в SQL Server 2014 SP 2, която се използва за създаване на клонинг на определена потребителска база данни, която помага при отстраняване на проблеми с производителността, свързани с оптимизатора на заявки.

Когато клониране на базата данни е създадена с помощта на 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, база данни за разпространение и т.н.) не е разрешено.
  • Изходната база данни трябва да е онлайн или четивна.
  • База данни, която използва същото име като клонираната база данни, не трябва вече да съществува.
  • Командата не е в потребителска транзакция.
Ако всички проверки са успешни, DBCC CLONEDATABASE ще извърши следните операции:
  • Създаване на основен файл с данни и регистрационен файл
  • Добавяне на вторични пространства за данни
  • Добавяне на вторични файлове
Файловете на базата данни на местоназначението ще наследят настройките за размера и растежа от базата данни на модела, а имената на файловете на базата данни на местоназначението ще следват конвенцията source_file_name _underscore_random_number.
ИЗБЕРЕТЕ идентификатор на база данни, идентификатор на файл, 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
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на Trigger за регистриране на SQL тази засегната таблица?

  2. Различни начини за сравняване на схема и данни на таблици на SQL Server

  3. Кой е най-добрият начин да се изпише с главни букви първата буква на всяка дума в низ в SQL Server

  4. Как да копирате огромни данни от таблица в друга таблица в SQL Server

  5. SQL Изберете предстоящи рождени дни