Controlando a criação de arquivos adicionados durante o roll-forward

Geralmente, as alterações nos arquivos e grupos de arquivos depois de um backup completo são manipuladas de forma transparente. Se um arquivo for adicionado a um banco de dados depois do último backup do grupo de arquivos, ao restaurar o banco de dados, a abordagem mais fácil será permitir que a restauração recrie automaticamente todos os arquivos no banco de dados restaurado. No entanto, os arquivos não danificados e somente leitura podem ser recriados desnecessariamente. Ao usar a restauração para reparar um problema conhecido e isolado, é possível otimizar o desempenho da restauração, restaurando apenas os arquivos nos quais há um problema.

ObservaçãoObservação

Se você restaurar um backup que contém arquivos que o Mecanismo de banco de dados do SQL Server espera que sejam ignorados, o Mecanismo de banco de dados do SQL Server ignora a cópia de dados e refaz as etapas para aqueles arquivos. Para obter informações sobre essas etapas, consulte Compreendendo como a restauração e a recuperação de backups funcionam no SQL Server.

Para que a restauração crie um arquivo, é necessário especificar os arquivos ou as páginas em uma instrução RESTORE DATABASE, conforme indicado a seguir:

  • Se os arquivos específicos ou as páginas não forem especificadas

    Este é o cenário típico. Ao encontrar uma entrada de log que adicione um arquivo ao banco de dados, a restauração cria e adiciona automaticamente o arquivo ao conjunto de roll-forward. O comportamento exato depende da especificação de grupos de arquivos na instrução RESTORE DATABASE. Se nenhum grupo de arquivo for especificado, todos os novos arquivos serão criados e adicionados ao conjunto de roll-forward. Caso especifique os grupos de arquivos, um novo arquivo será criado e adicionado ao conjunto de roll-forward apenas se o arquivo pertencer a um agrupo de arquivos especificado.

    Prática recomendada: Para a maioria das restaurações, evite listar arquivos específicos para permitir que os arquivos criados por transações registradas sejam recriados automaticamente.

  • Arquivos específicos ou páginas especificadas:

    Listar arquivos específicos ou páginas na instrução RESTORE DATABASE definirá o conjunto de roll-forward exato. Ao listar arquivos ou páginas, serão restaurados exatamente conforme as suas instruções e apenas esses itens.

    Os arquivos não listados são considerados para serem ajustados e não são criados no log. Portanto, ao restaurar um backup de log contendo uma operação de adicionar arquivos, será necessário especificar o nome do arquivo adicionado na instrução RESTORE.

O restante deste tópico descreve como identificar os arquivos que contêm operações de adicionar arquivos e como verificar se esses arquivos foram recriados durante a seqüência de restauração.

Identificando qual arquivo de log contém uma operação de adicionar arquivos

É possível identificar qual arquivo de log contém uma operação de adicionar arquivos, da seguinte maneira:

  • Você pode usar o arquivo criar LSN (create_lsn). Isso está disponível em ambos as exibições de catálogos sys.database_files e sys.master_files.

  • É possível obter informações sobre o conteúdo dos arquivos de backups pelas tabelas de histórico de backup em msdb ou usando RESTORE FILELISTONLY. Para obter mais informações, consulte RESTORE FILELISTONLY (Transact-SQL).

Restaurando arquivos ou páginas sem um backup completo

É possível especificar uma lista de arquivo, lista de página ou um grupo de arquivos em um log ou restauração diferencial. Essa capacidade permite restaurar arquivos ou páginas para as quais nenhum backup de banco de dados completo existe. Restaurar um arquivo ou página de um backup diferencial de um backup de log é uma exceção à regra que uma seqüência de restauração deve iniciar com um backup completo.

A sintaxe básica para restaurar de um backup de arquivo diferencial é:

RESTORE DATABASE nome_do_banco_de_dados <arquivo_grupo_de_arquivos_página_lista> FROM <backup diferencial>

A sintaxe básica para restaurar de um backup de arquivo diferencial é:

RESTORE LOG nome_do_banco_de_dados <arquivo_grupo_de_arquivos_página_lista> FROM <backup de log>