AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 331203
Accepted
shaolinmonk
shaolinmonk
Asked: 2023-09-13 21:16:58 +0800 CST2023-09-13 21:16:58 +0800 CST 2023-09-13 21:16:58 +0800 CST

O banco de dados de restauração T-SQL restaura apenas dados antigos

  • 772
Esta questão foi migrada do Stack Overflow porque pode ser respondida no Stack Exchange dos Administradores de Banco de Dados. Migrado há 17 horas .

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 DATABASEo 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
sql-server
  • 1 1 respostas
  • 11 Views

1 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2023-09-13T22:58:33+08:002023-09-13T22:58:33+08:00

    O problema é que você colocou vários backups em um único arquivo.

    FILE = 1
    

    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:

    RESTORE HEADERONLY FROM DISK = N'\\sql2014\migration\db1.BAK';
    

    As colunas importantes na saída a serem observadas são Position(que corresponde ao FILE = parâmetro que você deseja na restauração) e BackupFinishDate(para confirmar que você está obtendo o mais recente). É claro que verifique se isso DatabaseNameestá correto, pois você pode fazer backup de vários bancos de dados diferentes no mesmo arquivo.

    Não que você deva fazer isso (mesmo para o mesmo banco de dados). Na época das fitas e da minimização do número de arquivos transferidos, isso pode ter feito sentido, mas em sistemas modernos, você deve sempre colocar cada backup em seu próprio arquivo. A automação pode ajudar com isso (por exemplo, a solução de Ola ) simplesmente tendo um modelo para o nome do arquivo que injeta um carimbo de data/hora, mantendo os arquivos de backup exclusivos. Além disso, se você sempre usa BACKUP DATABASE ... WITH INIT, FORMAT, saberá que o backup só pode conter o mais recente.

    Mas esse pode não ser o objetivo - por exemplo, se você quiser manter os últimos 7 backups, precisará de carimbos de data e hora no nome ou precisará colocá-los em pastas diferentes.

    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// .nextOK

    • 5

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve