Como saber se um arquivo de backup contém CDC?

9

Usando o SQL Server 2008 até 2014, eu sei como fazer backup e restaurar um banco de dados com o Change Data Capture ativado (CDC), mas o que estou procurando é uma maneira de consultar um arquivo de backup completo para determinar se ele contém dados do CDC.

O que seria ótimo seria uma maneira como RESTORE FILELISTONLYessa obter a lista de arquivos do banco de dados, mas obter o status do CDC para determinar se a restauração precisará usar o sinalizador KEEP_CDC?

Existe uma maneira de determinar se um backup contém dados do CDC?

obrigado!

Steve Stedman
fonte

Respostas:

7

(se alguém encontrar uma maneira - que eu acho que não exista, excluirei minha resposta :-))

Existe uma maneira de determinar se um backup contém dados do CDC?

Eu não acho que exista alguma maneira de saber de um backup, se o CDC está ativado ou não.

O máximo que você pode saber se o banco de dados esteve envolvido na replicação (sob o capô, usa o agente leitor de log que varre o log de transações) ou não usando DatabaseBackupLSN no resultado do RESTORE HEADERONLYDatabaseBackupLSN, como é o "início do ponto de verificação" acionado quando o backup começa. Esse LSN coincidirá FirstLSNse o backup for realizado quando o banco de dados estiver ocioso e nenhuma replicação estiver configurada.

Suponho que a razão pela qual a Microsoft não apareça se o CDC está ativado ou não, também pode ser uma questão de segurança. O CDC é uma tecnologia de nível empresarial que permite o rastreamento de alterações até o nível da coluna. Isso é exigido por regulamentos como HIPAA, FISMA, etc.

De restaurar ou anexar um banco de dados ativado para captura de dados alterados

O SQL Server usa a seguinte lógica para determinar se a captura de dados alterados permanece ativada depois que um banco de dados é restaurado ou anexado:

  • Se um banco de dados for restaurado no mesmo servidor com o mesmo nome, a captura de dados alterados permanecerá ativada.
  • Se um banco de dados for restaurado para outro servidor, por padrão, a captura de dados alterados será desativada e todos os metadados relacionados serão excluídos.
  • Para manter a captura de dados alterados, use a opção KEEP_CDC ao restaurar o banco de dados. Para mais informações sobre esta opção, consulte RESTORE.
  • Se um banco de dados for desanexado e conectado ao mesmo servidor ou outro servidor, a captura de dados alterados permanecerá ativada.
  • Se um banco de dados for anexado ou restaurado com a opção KEEP_CDC para qualquer edição que não seja Enterprise, a operação será bloqueada porque a captura de dados alterados requer o SQL Server Enterprise. A mensagem de erro 932 é exibida:

O SQL Server não pode carregar o banco de dados '%. * Ls' porque a captura de dados alterados está ativada. A edição atualmente instalada do SQL Server não oferece suporte à captura de dados alterados. Desative a captura de dados alterados no banco de dados usando uma edição suportada do SQL Server ou atualize a instância para uma que suporte a captura de dados alterados.

Kin Shah
fonte
Kin - Como sempre, você é um DBA do rockstar. Obrigado pelos detalhes. Acho que cheguei à mesma conclusão e estava realmente procurando alguém para validar que não há como verificar se um backup contém CDC. Tenha um ótimo dia. Obrigado!
Steve Stedman 5/05
@SteveStedman Obrigado por palavras amáveis. Voto / aceite a resposta se sua pergunta for respondida. Esse futuro vai ajudar os leitores bem :-)
Kin Shah
Obrigado Steve pelo post e obrigado @Kin, aprendi algo novo hoje.
SQLBoy 29/11
Nota: O CDC agora está disponível no 2016SP1 Standard ou acima e está se tornando mais popular. Eu gostaria opções CDC na restauração, a interface do usuário no SSMS, sugeri isso em conexão também: connect.microsoft.com/SQLServer/feedback/details/3144490/...
GilesDMiddleton