Comando DBCC CLONEDATABASE
Cuando inicie con los Comandos DBCC, mencione que dentro de la categoría de varios se encontraba este comando que crea una nueva base de datos que contiene el esquema de todos los objetos y estadísticas de la base de datos de origen especificada. Este comando es realmente una buena incorporación a los comandos de consola de base de datos que ha realizado Microsoft SQL Server, este comando inicia su funcionamiento en la versión Microsoft SQL Server 2017, aunque está presente en las versiones de Microsoft SQL Server 2012 en el paquete de servicio 4, Microsoft SQL Server 2014 en el paquete de servicio 2 y en Microsoft SQL Server 2016 en el paquete de servicio 1.
Es realmente
importante notar que esta funcionalidad no está pensada para que la base de
datos clonada se utilice en ambientes productivos ya que su principal objetivo
es la resolución de problemas y diagnóstico. De tal forma que se recomienda que
una vez que se ha generado la base de datos clonada, ésta sea separada del
servidor y restaurada en algún otro servidor.
La sintaxis
de este comando en su forma más simple es:USE master;
GO
GO
DBCC CLONEDATABASE (source_database_name,
target_database_name);
Microsoft SQL Server
llevara a cabo las acciones requeridas para hacer un clone de la base de datos
identificada como source_database_name, generando la base de datos denominada
target_database_name. Es importante notar que toda la información de la tarea
solicitada se registrara en el registro de Microsoft SQL Server. Las acciones que se
llevan a cabo incluyen la generación de la base de datos del tamaño
especificado en la base de datos model, se establece el método de recuperación
den SIMPLE, así como el método de verificación de página en CHECKSUM, la opción
TRUSTWORTHY a OFF y DB_CHAINING a OFF para la base de datos identificada como
target_database_name. Una vez que la operación se ha llevado a cabo, la base de
datos identificada target_database_name quedara en el estado de solo lectura y
se presentara la siguiente notificación en los resultados.
Database cloning for 'source_database_name'
has started with target as 'target_database_name'.
Database cloning for 'source_database_name'
has finished. Cloned database is 'target_database_name'.Database 'source_database_name' is a cloned database. A cloned database should be used for diagnostic purposes only and is not supported for use in a production environment.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Se puede observar
que el último mensaje de la ejecución del comando indica que la base de datos
clonada solo debe ser utilizada con propósitos
de diagnóstico y no será soportada en un ambiente de producción.
En términos
generales podemos decir que esta operación lleva a cabo las siguientes
operaciones:- Crea una nueva base de datos de destino con el nombre identificado en target_database_name, que utiliza el mismo diseño de archivo que la base de datos origen, pero con tamaños de archivo predeterminados como la base de datos model.
- Crea una instantánea interna de la base de datos origen, identificada como source_database_name, para poder extraer los metadatos correspondientes.
- Copia los metadatos del sistema de la base de datos origen, source_database_name, a la base de datos de destino, identificada como tarjet_database_name.
- Copia todos los esquemas para todos los objetos desde la base de datos origen hasta la base de datos destino.
- Copia las estadísticas para todos los índices desde el origen a la base de datos de destino. Aquí se ve la importancia de que esta base de datos deba ser utilizada con propósitos de diagnóstico.
NO_STATISTICS
|
Este argumento especifica
si las estadísticas de tabla / índice deben excluirse en el clon. Si no se
especifica esta opción, las estadísticas de tabla / índice se incluyen
automáticamente. Esta opción está disponible comenzando con Microsoft SQL Server 2014
SP2 CU3 y Microsoft SQL Server 2016 Service Pack 1.
|
NO_QUERYSTORE
|
Este argumento especifica
si el almacén de consultas necesita ser excluido en el clon. Si no se
especifica esta opción, los datos del almacén de consultas se copian en el
clon si están habilitados en la base de datos de origen. Esta opción está
disponible comenzando con Microsoft SQL Server 2016 Service Pack 1.
|
Como se ha
mencionado, este comando debe ser utilizado para crear una copia del esquema y las
estadísticas de una base de datos de producción, para investigar los problemas
de rendimiento de las consultas, por lo que es importante tomar en cuenta las
restricciones y los objetos que son soportados en el uso de este comando,
Microsoft ha indicado una serie de objetos que están permitidos para la clonación,
mismos que están indicados en la documentación del comando. Las restricciones
implican que el uso del comando genere mensajes de error y estas son:
- La base de datos de origen siempre debe ser especificada para una base de datos de usuario. La clonación de bases de datos del sistema (master, model, msdb, tempdb, distribution database, etc.) no está permitida.
- La base de datos de origen que se establece en el comando debe estar en línea o legible.
- El nombre de la base de datos que se establece como de destino no debe existir previamente al uso del comando.
- El comando no debe ser usado en una transacción de usuario.
Ejemplos de DBCC CLONEDATABASE
Mostraré algunos ejemplos de uso de este comando:USE master;
GO
GO
DBCC CLONEDATABASE
(db1, db2);
Genera un
clone de la base de datos indicada como db1 generando la base de datos indicada
como db2, incluye el esquema, las estadísticas y en el caso de Microsoft SQL Server 2016
y posterior, también incluye el almacenamiento de consultas y deja la base de
datos db2 en el estado de solo lectura.USE master;
GO
DBCC CLONEDATABASE (AdventureWorks,
AdventureWorks_Clone) WITH NO_STATISTICS;
Crea un
clone de la base de datos AdventureWorks, solo el esquema, sin incluir las estadísticas,
para el caso de Microsoft SQL Server 2014 y posterior,
pero incluye almacenamiento de consultas para Microsoft SQL Server 2016 y
posterior.USE master;
GO
DBCC CLONEDATABASE (db1, db1_Clone) WITH
NO_STATISTICS, NO_QUERYSTORE;
Crea un
clone de la base de datos db1, solo el esquema, sin incluir las estadísticas, ni
el almacenamiento de consultas para Microsoft SQL Server 2016 y posterior. Este ejemplo
no funcionará en versiones anteriores de Microsoft SQL Server 2016.Comentarios
Este comando debe ser utilizado cuando se tiene un bajo desempeño de las consultas en una base de datos y se debe llevar a cabo un análisis para la resolución de los problemas y el diagnostico correspondiente, ya que como se ha visto se copia todo el esquema de la base de datos de destino y se permite mantener las estadísticas generadas con las consultas y los índices, así como el almacenamiento de las consultas, en las versiones de Microsoft SQL Server 2016 y posteriores.
Es
necesario indicar que si bien existen argumentos que nos permiten generar únicamente
la estructura, el uso de la base de datos clonada solo podrá servir para
efectos de mantener una copia limpia de la base de datos original, la cual puede
ser usada en otro servidor para desarrollo o pruebas.
No hay comentarios.:
Publicar un comentario