KB3177838 - Como utilizar o DBCC CLONEDATABASE para gerar um esquema e estatísticas apenas copiar uma base de dados de utilizadores no SQL Server

Resumo

Esta atualização introduz um novo comando de gestão DBCC CLONEDATABASE (Transact-SQL) no SQL Server 2017 no Windows, Service Pack 4 para SQL Server 2012,Microsoft SQL Server 2014 Service Pack 2 e SQL Server 2016 SP1. Este comando cria uma nova base de dados que contém o esquema de todos os objetos e estatísticas da base de dados de origem especificada. 

Nota Nos ambientes SQL Server 2014, tem de instalar a Atualização Cumulativa 3 para o SQL Server 2014 SP2 para obter a capacidade de clonar objetos filestream, FileTable e idioma comum (CLR) e clonar com opções NO_STATISTICS utilizando o DBCC.

Sobre pacotes de serviços para SQL Server

 

Os pacotes de serviço são cumulativos. Cada novo pacote de serviços contém todas as correções que se encontram em pacotes de serviços anteriores, juntamente com quaisquer novas correções. A nossa recomendação é aplicar o mais recente pacote de serviços e a mais recente atualização cumulativa para esse pacote de serviços. Não tem de instalar um pacote de serviços anterior antes de instalar o mais recente pacote de serviços. Utilize o Quadro 1 no seguinte artigo para encontrar mais informações sobre o mais recente pacote de serviços e a mais recente atualização cumulativa.

Como determinar a versão, edição e nível de atualização do SQL Server e seus componentes

Sobre a DBCC CLONEDATABASE

Os Serviços de Apoio ao Cliente da Microsoft podem solicitar-lhe que gere um clone de uma base de dados utilizando o DBCC CLONEDATABASE para investigar um problema de desempenho relacionado com o otimizador de consultas.Nota A base de dados recentemente gerada a partir do DBCC CLONEDATABASE não é suportada para ser utilizada como base de dados de produção e destina-se principalmente a efeitos de resolução de problemas e diagnóstico. Recomendamos a desconexão da base de dados clonada após a criação da base de dados. A clonagem da base de dados de origem é efetuada pelas seguintes operações:

  • Cria uma nova base de dados de destino que usa o mesmo layout de ficheiro que a fonte, mas com tamanhos de ficheiros predefinidos como a base de dados do modelo.

  • Cria uma imagem interna da base de dados de origem.

  • Copia os metadados do sistema da fonte para a base de dados de destino.

  • Copia todos os esquemas para todos os objetos desde a fonte até à base de dados de destino.

  • Copia estatísticas de todos os índices da fonte para a base de dados de destino.

Sintaxe

DBCC CLONEDATABASE (source_database_name, target_database_name)[WITH [NO_STATISTICS][,NO_QUERYSTORE]] 

Argumentos

  • source_database_nameEste argumento é o nome da base de dados cujos esquemas e estatísticas precisam de ser copiados.

  • target_database_nameEste argumento é o nome da base de dados a que o esquema e as estatísticas da base de dados de origem serão copiados. Esta base de dados será criada pela DBCC CLONEDATABASE e não deverá existir.

  • NO_STATISTICSEste argumento especifica se as estatísticas de tabela/índice devem ser excluídas no clone. Se esta opção não for especificada, as estatísticas de tabela/índice são automaticamente incluídas. Esta opção está disponível a partir do SQL Server 2014 SP2 CU3 e SQL Server 2016 Service Pack 1.

  • NO_QUERYSTOREEste argumento especifica se a loja de consultas precisa de ser excluída no clone. Se esta opção não for especificada, os dados da loja de consulta são copiados para o clone se estiver ativado na base de dados de origem. Esta opção está disponível a partir do SQL Server 2016 Service Pack 1.

Quando utilizar a DBCC CLONEDATABASE?

A DBCC CLONEDATABASE deve ser utilizada para criar um esquema e as estatísticas apenas copiarem uma base de dados de produção para investigar problemas de desempenho de consulta. Esteja atento às seguintes restrições e objetos suportados:

  • RestriçõesAs seguintes validações são realizadas pela DBCC CLONEDATABASE. O comando falha se alguma das validações falhar.

    • A base de dados de origem deve ser uma base de dados de utilizadores. Não é permitida a clonagem de bases de dados do sistema (mestre, modelo, msdb, temporário, base de dados de distribuição, etc.).

    • A base de dados de origem deve estar online ou legível.

    • Uma base de dados que utilize o mesmo nome que a base de dados de clones já não deve existir.

    • O comando não está numa transação de utilizador.

    Se todas as validações forem bem sucedidas, a DBCC CLONEDATABASE executará as seguintes operações:

    • Criação de ficheiros de dados primários e ficheiro de registo

    • Adicionar espaços de dados secundários

    • Adicionar ficheiros secundários

    Nota Todos os ficheiros na base de dados-alvo herdarão as definições de tamanho e crescimento da base de dados do modelo. Convenção de nomes de ficheiros: Os nomes dos ficheiros da base de dados de destino seguirão a convenção de números source_file_name _underscore_random. Se o nome do ficheiro gerado já existir na pasta de destino, a DBCC CLONEDATABASE falhará.

  • Instantâneo de dados internoDBCC CLONEDATABASE utiliza uma base de dados interna da base de dados de origem para a consistência transacional necessária para a realização da cópia. Isto evita problemas de bloqueio e de concordância quando estes comandos são executados. Se não for possível criar um instantâneo, o DBCC CLONEDATABASE falhará. Os bloqueios de nível de base de dados são mantidos durante os seguintes passos do processo de cópia:

    • Validar a base de dados de origem

    • Obtenha o bloqueio S para a base de dados de origem

    • Criar instantâneo da base de dados de origem

    • Criar uma base de dados de clones (esta é uma base de dados vazia que herda do modelo)

    • Obtenha o bloqueio X para a base de dados de clones

    • Copie os metadados para a base de dados do clone

    • Liberte todas as fechaduras DB

    Assim que o comando terminar de funcionar, a imagem interna é largada. As opções de confiança e DB_CHAINING são desligadas numa base de dados clonada.

Objetos suportados

Apenas os seguintes objetos serão clonados na base de dados de destino. Os objetos encriptados são clonados mas não são suportados em clone nesta versão do SQL Server. Quaisquer objetos que não estejam listados na seguinte secção não são suportados na clonagem:

  • FUNÇÃO DE CANDIDATURA

  • GRUPO AVAILABILITY

  • ÍNDICE COLUMNSTORE

  • CDB

  • CDC

  • Change Tracking(SQL Server 2016 SP2 CU10, SQL Server 2017 CU17, SQL Server 2019 CU1 e versões posteriores)

  • CLR (início do SQL Server 2014 SP2 CU3, SQL Server 2016 Service Pack 1 e versões posteriores)

  • PROPRIEDADES DE BASE DE DADOS

  • PADRÃO

  • FICHEIROS E GRUPOS DE FICHEIROS

  • Texto completo (início SQL Server 2016 SP1 CU2)

  • FUNÇÃO

  • ÍNDICE

  • LOGIN

  • FUNÇÃO DE PARTIÇÃO

  • ESQUEMA DE PARTIÇÃO

  • PROCEDIMENTO Nota Os procedimentos T-SQL são suportados em todas as versões a partir do SQL Server 2014 SP2. Os procedimentos CLR são suportados a partir do SQL Server 2014 SP2 CU3. Os procedimentos compilados de forma nativa são suportados a partir do SQL Server 2016 SP1.

  • LOJA QUERY (apenas no SQL Server 2016 Service Pack 1 e versões posteriores) Nota A Loja de Consultas só é copiada se estiver ativada na base de dados de origem. Para copiar as estatísticas de tempo de execução mais recentes como parte da Query Store, execute sp_query_store_flush_db para descarregar as estatísticas de tempo de execução na loja de consultas antes de executar a DBCC CLONEDATABASE.

  • PAPEL

  • REGRA

  • SCHEMA

  • SEQUÊNCIA

  • ÍNDICE ESPACIAL

  • ESTATÍSTICAS

  • SINÓNIMO

  • MESA

  • TABELAS OTIMIZADAS DE MEMÓRIA (apenas no SQL Server 2016 SP1 e versões posteriores).

  • OBJETOS FILESTREAM E FILETABLE (Starting SQL Server 2014 SP2 CU3, SQL Server 2016 SP1 e versões posteriores).

  • GATILHO

  • TIPO

  • DB atualizado

  • UTILIZADOR

  • VISTA

  • ÍNDICE XML

  • COLEÇÃO XML SCHEMA

 

Permissões

Tens de ter a filiação na função de servidor fixo sysadmin.

Limitações e Considerações

A DBCC CLONEDATABASE não suporta a criação de um clone se existirem objetos de utilizador (tabelas, índices, esquemas, funções, e assim por diante) que foram criados na base de dados do modelo. Se os objetos do utilizador estiverem presentes na base de dados do modelo, o clone da base de dados falha com a seguinte mensagem de erro:

Msg 2601, Nível 14, Estado 1, Linha 1Não pode inserir linha de chave duplicada no objeto <tabela do sistema> com 'nome de índice' único. O valor-chave duplicado é <valor-chave>   

Para obter informações relacionadas com a segurança de dados em bases de dados clonadas, consulte o seguinte blog:Compreender a segurança dos dados em bases de dados clonadas.

Se tiver índices de loja de colunas, consulte o seguinte blog:Considerações quando sintoniza as consultas com índices de colunas nas bases de dados de clonespara atualizar as estatísticas do índice de colunas antes de executar o comando DBCC CLONEDATABASE.

Mensagens de registo de erro

As seguintes mensagens são registadas no registo de erros durante o processo de clonagem:

<Timestamp> a clonagem de base de dados spid53 para 'sourcedb' começou com o alvo como 'sourcedb_clone'.<Timestamp> spid53 Base de dados de arranque 'sourcedb_clone'.<Timestamp> a opção de base de dados de fixação espid53 TRUSTWORTH TO OFF para base de dados 'sourcedb_clone'..<Timestamp> spid53 A opção de base de dados de definição DB_CHAINING para OFF para a base de dados 'sourcedb_clone'.<Timestamp> spid53 A base de dados de arranque 'sourcedb_clone'.<Timestamp> spid53 Database 'sourcedb_clone' é uma base de dados clonada. Uma base de dados clonada deve ser utilizada apenas para fins de diagnóstico e não é suportada para utilização num ambiente de produção.<o Timestamp> a clonagem de base de dados spid53 para "sourcedb" terminou. A base de dados clonada é "sourcedb_clone".

Propriedade de Base de Dados

Uma nova propriedade de base de dados IsClone é adicionada. DATABASEPROPERTYEX ('dbname', 'IsClone') devolverá 1 se a base de dados for gerada utilizando a DBCC CLONEDATABASE.

Exemplos

  1. Criação de um clone da base de dados AdventureWorks que inclui schema, estatísticas e loja de consultas (SQL Server 2016 SP1 e versões posteriores)

    Transact-SQL -- Generate the clone of AdventureWorks database.    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);    GO 
  2. Criação de um clone apenas de esquema da base de dados AdventureWorks no SQL Server 2014 sem estatísticas (SQL Server 2014 SP2 CU3 e versões posteriores)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS
  3. Criação de um clone apenas de esquema da base de dados AdventureWorks sem estatísticas e loja de consultas (SQL Server 2016 SP1 e versões posteriores)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS,NO_QUERYSTORE

Referências

Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×