Tive uma migração do SQL Server 2014 para o SQL Server 2022.
Primeiro criei backups COMPLETOS da instância do SQL Server 2014 e, em seguida, executei RESTORE DATABASE
o script mostrado abaixo para fazer uma migração de teste. Tudo funcionou conforme planejado.
Uma semana depois, descartei todos os bancos de dados no novo servidor, fiz backup do SQL Server 2014 novamente com os mesmos nomes de arquivo e executei novamente o script abaixo. No entanto, o SQL Server 2022 não restaurou a versão mais recente do arquivo e, em vez disso, restaurou apenas os dados da semana anterior. Apenas clicar com o botão direito na IU e fazer uma "restauração" a partir daí restaurou a versão atual dos dados.
Alguém pode me ajudar a entender por que isso evita isso no futuro?
BACKUP DATABASE db1 TO DISK = db1.BAK;
RESTORE DATABASE [db1]
FROM DISK = N'\\sql2014\migration\db1.BAK' WITH FILE = 1,
MOVE N'db1_data' TO N'D:\Data\db1_data.mdf',
MOVE N'db1_log' TO N'D:\Log\db1_log.ldf',
NOUNLOAD,
REPLACE,
STATS = 5;
GO
O problema é que você colocou vários backups em um único arquivo.
Isso informa ao SQL Server para restaurar a partir do primeiro arquivo (leia-se: mais antigo ) do backup (que também é o padrão se você não especificar). Você pode ver os backups e seus números de arquivo executando:
As colunas importantes na saída a serem observadas são
Position
(que corresponde aoFILE =
parâmetro que você deseja na restauração) eBackupFinishDate
(para confirmar que você está obtendo o mais recente). É claro que verifique se issoDatabaseName
está correto, pois você pode fazer backup de vários bancos de dados diferentes no mesmo arquivo.Finalmente, eu simplesmente não usaria a UI para restaurar bancos de dados. Os comandos são muito mais expressivos e oferecem controle preciso sobre exatamente o que você deseja fazer. Use a UI para gerar/aprender os comandos, talvez, mas não
next
// .next
OK