Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server
Genera una copia de solo esquema y de solo lectura de una base de datos mediante DBCC CLONEDATABASE
para investigar problemas de rendimiento relacionados con el optimizador de consultas.
Convenciones de sintaxis de Transact-SQL
DBCC CLONEDATABASE
(
source_database_name
, target_database_name
)
[ WITH { [ NO_STATISTICS ] [ , NO_QUERYSTORE ] [ , VERIFY_CLONEDB | SERVICEBROKER ] [ , BACKUP_CLONEDB ] } ]
El nombre de la base de datos que se va a copiar.
El nombre de la base de datos en la que se copiará la base de datos de origen. DBCC CLONEDATABASE
creará esta base de datos, que no debería existir.
Se aplica a: SQL Server 2014 (12.x) Service Pack 2 CU 3, SQL Server 2016 (13.x) Service Pack 1 y versiones posteriores.
Especifica si las estadísticas de tabla o índice se deben excluir de la clonación. Si no se especifica esta opción, se incluirán automáticamente estadísticas de tabla o de índice.
Se aplica a: SQL Server 2016 (13.x) Service Pack 1 y versiones posteriores.
Especifica si los datos del Almacén de consultas se deben excluir del clon. Si no se especifica esta opción, los datos del Almacén de consultas se copiarán en el clon si el Almacén de consultas está habilitado en la base de datos de origen.
Se aplica a: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 y versiones posteriores.
Comprueba la coherencia de la base de datos nueva. Habilitar VERIFY_CLONEDB
también deshabilita las estadísticas y la recopilación del Almacén de consultas, lo que equivale a ejecutar WITH VERIFY_CLONEDB, NO_STATISTICS, NO_QUERYSTORE
.
El siguiente comando se puede usar para determinar si se ha comprobado la base de datos clonada:
SELECT DATABASEPROPERTYEX('clone_database_name', 'IsVerifiedClone');
Se aplica a: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 y versiones posteriores.
Especifica si los catálogos del sistema relacionados con Service Broker deben incluirse en el clon. La opción SERVICEBROKER
no se puede usar en combinación con VERIFY_CLONEDB
.
Se aplica a: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 y versiones posteriores.
Crea y comprueba una copia de seguridad de la base de datos clonada. Si se usa en combinación con VERIFY_CLONEDB
, la base de datos clonada se comprueba antes de que se realice la copia de seguridad.
Un clon de una base de datos generada con DBCC CLONEDATABASE
solo está pensado para la solución de problemas y los fines de diagnóstico. El clon es una copia de solo lectura y de solo esquema de la base de datos original y tiene limitaciones sobre las que se copian los objetos. Consulte la sección Objetos admitidos para obtener más detalles. No se admite ningún otro uso de una base de datos clonada.
Las validaciones siguientes las realiza DBCC CLONEDATABASE
. Se produce un error en el comando si alguna de las validaciones no se efectúa correctamente.
master
, model
, msdb
, tempdb
, distribution
, etc.).Si todas las validaciones se efectúan correctamente, la clonación de la base de datos de origen se lleva a cabo mediante las siguientes operaciones:
model
.Todos los archivos de la base de datos de destino heredarán la configuración de tamaño y crecimiento de la base de datos model
. Los nombres de archivo para la base de datos de destino siguen la convención <source_file_name_underscore_random number>
. Si el nombre del archivo generado ya existe en la carpeta de destino, se producirá un error en DBCC CLONEDATABASE
.
DBCC CLONEDATABASE
no admite la creación de un clon si hay algún objeto de usuario (tablas, índices, esquemas, roles, etc.) que se ha creado en la base de datos model
. Si hay objetos de usuario en la base de datos model
, se produce un error en el clon de la base de datos con el siguiente mensaje de error:
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object <system table> with unique index 'index name'. The duplicate key value is <key value>
Importante
Si tiene índices de almacén de columnas, vea Consideraciones al optimizar las consultas con índices de almacén de columnas en las bases de datos clonadas para actualizar las estadísticas de los índices de almacén de columnas antes de ejecutar el comando DBCC CLONEDATABASE
. A partir de SQL Server 2019 (15.x), los pasos manuales descritos en el artículo anterior ya no serán necesarios, ya que el comando DBCC CLONEDATABASE
recopila esta información automáticamente.
A partir de SQL Server 2019 (15.x), DBCC CLONEDATABASE
captura automáticamente los blobs de estadísticas de índices de almacén de columnas, por lo que no es necesario realizar ningún paso manual. DBCC CLONEDATABASE
crea una copia de solo esquema de una base de datos que incluye todos los elementos necesarios para solucionar problemas de rendimiento de consultas sin copiar los datos. En versiones anteriores de SQL Server, el comando no copiaba las estadísticas necesarias para solucionar con precisión los problemas de las consultas del índice de almacén de columnas y se tenían que realizar pasos manuales para capturar esta información.
Para obtener información relacionada con la seguridad de los datos en bases de datos clonadas, vea Understanding data security in cloned databases (Descripción de la seguridad de los datos en bases de datos clonadas).
DBCC CLONEDATABASE
usa una instantánea de base de datos interna de la base de datos de origen para la coherencia transaccional que se necesita para realizar la copia. Con esta instantánea se evitan problemas de bloqueo y de simultaneidad cuando se ejecutan estos comandos. Si no se puede crear una instantánea, se producirá un error en DBCC CLONEDATABASE
.
Durante los siguientes pasos del proceso de copia se mantienen bloqueos de nivel de base de datos:
model
)Tan pronto como el comando haya terminado de ejecutarse, se quitará la instantánea interna. Las opciones TRUSTWORTHY
y DB_CHAINING
están desactivadas en una base de datos clonada.
Solo se pueden clonar los siguientes objetos en la base de datos de destino. Los objetos cifrados se clonan, pero no se pueden usar en la base de datos clonada. Los objetos que no figuran en la siguiente sección no se admiten en el clon:
1 A partir de SQL Server 2014 (12.x) Service Pack 2 CU 3.
2 A partir de SQL Server 2016 (13.x) Service Pack 1.
3 A partir de SQL Server 2016 (13.x) Service Pack 1 CU 2.
4 Los procedimientos de Transact-SQL se admiten en todas las versiones a partir de SQL Server 2014 (12.x) Service Pack 2. Los procedimientos CLR se admiten a partir de SQL Server 2014 (12.x) Service Pack 2 CU 3. Los procedimientos compilados de forma nativa se admiten a partir de SQL Server 2016 (13.x) Service Pack 1.
5 Los datos de Almacén de consultas solo se copian si están habilitados en la base de datos de origen. Para copiar las estadísticas en tiempo de ejecución más recientes como parte del Almacén de consultas, ejecute sp_query_store_flush_db
para vaciar las estadísticas en tiempo de ejecución en el Almacén de consultas antes de ejecutar DBCC CLONEDATABASE
.
6 A partir de SQL Server 2016 (13.x) Service Pack 2 CU 10.
7 A partir de SQL Server 2017 (14.x) Service Pack 2 CU 17.
8 A partir de SQL Server 2019 (15.x) CU 1 y las versiones posteriores.
9 La mayoría de las tablas del sistema marcadas como is_ms_shipped
no se clonan.
Requiere la pertenencia al rol fijo de servidor sysadmin .
Los siguientes mensajes son un ejemplo de los mensajes registrados en el registro de errores durante el proceso de clonación:
2018-03-26 15:33:56.05 spid53 Database cloning for 'sourcedb' has started with target as 'sourcedb_clone'.
2018-03-26 15:33:56.46 spid53 Starting up database 'sourcedb_clone'.
2018-03-26 15:33:57.80 spid53 Setting database option TRUSTWORTHY to OFF for database 'sourcedb_clone'.
2018-03-26 15:33:57.80 spid53 Setting database option DB_CHAINING to OFF for database 'sourcedb_clone'.
2018-03-26 15:33:57.88 spid53 Starting up database 'sourcedb_clone'.
2018-03-26 15:33:57.91 spid53 Database 'sourcedb_clone' is a cloned database. A cloned database should be used for diagnostic purposes only and is not supported for use in a production environment.
2018-03-26 15:33:57.92 spid53 Database cloning for 'sourcedb' has finished. Cloned database is 'sourcedb_clone'.
Los Service Packs son acumulativos. Cada nuevo Service Pack contiene todas las correcciones que se encuentran en los service packs anteriores, junto con las nuevas correcciones. Nuestra recomendación es aplicar el Service Pack más reciente y la actualización acumulativa más reciente para ese Service Pack. No tiene que instalar un Service Pack anterior antes de instalar el Service Pack más reciente. Consulte la tabla 1 en Actualizaciones e historial de versiones más recientes para SQL Server para obtener más información sobre el Service Pack más reciente y la actualización acumulativa más reciente.
Nota
La base de datos recién generada a partir de DBCC CLONEDATABASE no se admite para usarse como base de datos de producción y está pensada principalmente para la solución de problemas y el diagnóstico. Se recomienda desasociar la base de datos clonada después de crear la base de datos.
DATABASEPROPERTYEX('dbname', 'IsClone')
devolverá 1 si la base de datos se generó mediante DBCC CLONEDATABASE
.
DATABASEPROPERTYEX('dbname', 'IsVerifiedClone')
devolverá 1 si la base de datos se ha comprobado correctamente con WITH VERIFY_CLONEDB
.
En el ejemplo siguiente se crea un clon de la base de datos AdventureWorks2022
que incluye datos de esquema, de estadísticas y de Almacén de consultas (SQL Server 2016 (13.x) Service Pack 1 y versiones posteriores):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone);
GO
En el ejemplo siguiente se crea un clon de la base de datos AdventureWorks2022
que no incluye estadísticas (SQL Server 2014 (12.x) Service Pack 2 CU 3 y versiones posteriores):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS;
GO
En el ejemplo siguiente se crea un clon de la base de datos AdventureWorks2022
que no incluye datos de estadísticas y de Almacén de consultas (SQL Server 2016 (13.x) Service Pack 1 y versiones posteriores):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS, NO_QUERYSTORE;
GO
En el ejemplo siguiente se crea un clon de solo esquema de la AdventureWorks2022
base de datos sin estadísticas y Almacén de consultas datos comprobados (SQL Server 2016 (13.x) Service Pack 2 y versiones posteriores):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB;
GO
En el ejemplo siguiente se crea un clon de solo esquema de la AdventureWorks2022
base de datos sin estadísticas y Almacén de consultas datos que se comprueban para su uso. También se creará una copia de seguridad comprobada de la base de datos clonada (SQL Server 2016 (13.x) Service Pack 2 y versiones posteriores).
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB, BACKUP_CLONEDB;
GO
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoy