Ao tentar espelhar um banco de dados usando o seguinte comando
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Eu obtenho o seguinte erro
A mensagem 1475, nível 16, estado 105,
banco de dados da linha 1 "test0916aj8CJ" pode conter alterações registradas em massa que não foram copiadas. Faça um backup de log no banco de dados principal ou no banco de dados principal. Em seguida, restaure esse backup no banco de dados espelho para habilitar o espelhamento de banco de dados ou em todos os bancos de dados secundários para permitir a associação ao grupo de disponibilidade.
Isso pode ser feito sem o backup do banco de dados? Ou devo fazer backup e descartar o backup. É para um banco de dados recém-criado, então não preciso do backup de qualquer maneira neste momento.
Eu tentei o seguinte ...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
mas o método acima também não funcionou.
obrigado
fonte
Respostas:
É fácil reproduzir o erro que você recebeu
Abaixo está o erro que você receberá:
Vamos entender o que é esse erro:
Você configurou seu banco de dados no modo de recuperação COMPLETO e acha que o banco de dados está realmente no modo de recuperação COMPLETO.
O exposto acima não é verdade. Depois de criar o banco de dados, se você não fizer um backup COMPLETO, mesmo que o banco de dados esteja no modo de recuperação COMPLETO, ele estará na recuperação pseudo-SIMPLES
Você pode verificá-lo facilmente usando dbcc dbinfo-> dbi_dbbackupLSNter valor 0:0:0(0x00000000:00000000:0000)ou usar o script de Paul Randal
Editar: Mesmo fazer um primeiro backup completo com a
COPY_ONLY
opção também não estabelece uma cadeia de backupdbcc dbinfo-> dbi_dbbackupLSNainda está tendo o valor de 0:0:0(0x00000000:00000000:0000). Isso significa que o banco de dados ainda está no modo de recuperação pseudo-simples.
O que você precisa fazer para resolver o erro acima?
Você precisa fazer um backup completo + um backup do log de transações no primário e, em seguida, restaurá-lo no banco de dados secundário
with norecovery
e depois ingressar no banco de dados no grupo AG ou no Espelhamento.Como uma nota lateral e por uma questão de integridade, para o seu roteiro
backup to NUL
, leia este post de Gail Shaw.fonte
Não entendo por que você está usando
TO DISK = N’NUL’
:Se você fizer isso, o backup será salvo em
NUL
(ou seja, = para lugar nenhum / nada) e não poderá ser usado porque o arquivo não existe.Embora
NUL
também possa ser usado como destino para backups de LOG, também não deve ser usado, especialmente em servidores Prod, pois os LOGs serão perdidos e a cadeia de backup será interrompida. (~ semelhante aSHRINKFILE
)Antes de adicionar um banco de dados ao grupo, você deve prepará-lo. Quando você deseja preparar um banco de dados secundário, pelo menos 1 backup do log de transações deve ser executado e restaurado. O espelho o utiliza para descobrir quais transações já foram sincronizadas no banco de dados secundário e quais ainda não estão sincronizadas com o banco de dados primário.
Portanto, você deve fazer backup dos logs de transação no banco de dados primário:
A
COPY_ONLY
opção deve ser usada. Ele garante que os logs não sejam truncados no final do backup do LOG.No entanto, você não pode restaurar um backup de log sozinho, ou seja, sem uma cadeia de backup (consulte a resposta do Kin também). Isso significa que o backup do log de transações deve ser realizado após a realização de um backup completo do banco de dados (+ um diferencial opcional, se necessário).
Como a
COPY_ONLY
opção não quebra a cadeia de backup, ela também não cria uma cadeia de backup. ACOPY_ONLY
opção não pode ser usada para o backup do banco de dados.Backups em ordem:
COPY_ONLY
opçãoCOPY_ONLY
opçãoEm seguida, o backup do banco de dados deve ser restaurado (+ diferencial) no secundário.
Ele deve ser restaurado com a
NORECOVERY
opção, porque você também deseja restaurar os backups de LOG depois que o backup COMPLETO for restaurado.Finalmente, você restaurará o backup do LOG. Você ainda precisa usar a
NORECOVERY
opção porque o espelho continuará restaurando as transações uma vez no local.NORECOVERY
opçãoNORECOVERY
opçãoNORECOVERY
opçãoNo servidor principal, execute:
No servidor secundário, execute:
Você pode então continuar adicionando o novo banco de dados secundário ao grupo de disponibilidade ...
fonte