Restaurar backup do log de transações - erro da família de mídia

3

Nosso procedimento de backup é o seguinte: backup completo da meia-noite, backups diferenciais de 8 horas e backups de log de transações de 5 minutos. Os planos de manutenção mantêm tudo rodando e arrumado.

Para restaurar um ponto específico no tempo (digamos ontem às 14h05). Ao restaurar com o SQL Server Management Studio 2012, clicamos com o botão direito do mouse no banco de dados que queremos restaurar em > Tarefas > Restaurar > Base de dados. Em seguida, restauramos o backup completo sem recuperação (e sobregravamos os dados existentes). Isso deixa o banco de dados em um estado "Restaurando ...". Nós então vamos para > Tarefas > Restaurar > Arquivos e grupos de arquivos. Selecione nosso backup diff mais próximo (meio dia). Restaurar sem recuperação.

Agora, para os registros de transação - Tarefas > Restaurar > Log de transações. Na caixa de diálogo, selecionamos "Do arquivo ou fita" e clicamos no botão para escolher os arquivos. Adicione e selecione os registros de transação de 5 minutos das 12:00 às 14:05 (25 deles). Quando clicamos em "OK" na caixa de diálogo ... o SSMS falha e apresenta o seguinte erro:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

The media loaded on "C:...\backup_2012_12_22_120500_4174134.trn" is formatted to support 1 media families, but 25 media families are expected according to the backup device specification. RESTORE HEADERONLY is terminating abnormally. (Microsoft SQL Server, Error: 3231)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2218&EvtSrc=MSSQLServer&EvtID=3231&LinkId=20476

Se me lembro que este é o procedimento exato que usamos no SQL Server 2008 e 2005, não vejo por que isso está falhando. Isso é algo específico para 2012? Isso é um bug? Não encontrei nenhuma informação sobre isso online. Nós não estamos usando backups de fita em tudo e a maioria das coisas que eu li sobre as famílias de mídia tem a ver com backups em fita.

Solução de problemas: Selecionando cada log de transação (um por vez) em seqüência e restaurando funciona. No entanto, isso pode levar mais de 15 minutos com muitos registros de transação.

Eu não tentei, mas acho que se escrevêssemos o TSQL simples no formato:

RESTORE DATABASE [OurDB] FILE = N'db_dat' FROM  DISK = N'C:\...\diff\backup_2012_12_23_085000_4627006.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10

E executei isso para cada log de xação - ele deve funcionar. Eu posso escrever algum powershell ou algo para restaurar o banco de dados ... mas o "Management Studio" não deveria ser capaz de lidar com isso? Essa resposta parece apontar para "não". link ... no entanto, a GUI parece sugerir a permissão de várias restaurações "Especificar a origem e o local do log de transações backups "- sem mencionar que permite selecionar vários arquivos em primeiro lugar.

    
por MikeMurko 23.12.2012 / 19:50

2 respostas

1

Uma família de mídia tem mais de um arquivo quando você distribui seus backups. Então, se você chamar seu backup da seguinte forma:

backup log [OurDb] to file = 'c:\file1', file='c:\file2'

No meu exemplo, o backup teria sido dividido em dois arquivos (ou seja, metade do backup teria ido para o arquivo1 e metade para o arquivo2) e ambos os arquivos seriam necessários para uma restauração. Para ver quais arquivos são necessários, dê uma olhada em backupmediafamily no msdb. A consulta a seguir deve chegar até você:

select family_sequence_number, physical_device_name
from backupmediafamily
where media_family_id = (
   select media_family_id
   from backupmediafamily
   where physical_device_name = N'C:\...\diff\backup_2012_12_23_085000_4627006.bak'
)

Depois, para restaurar, você precisa fazer algo assim para cada família de mídia que deseja restaurar:

restore database [OurDb] from file = ''c:\file1', file='c:\file2', ... with norecovery

Por fim, quando você estiver no ponto em que deseja finalmente colocar o banco de dados on-line (ou seja, restaurando os arquivos de log), faça:

restore database [OurDb] with recovery
    
por 23.12.2012 / 21:27
1

Eu encontrei uma maneira de resolver esse problema

Do Management Studio:

  1. Clique com o botão direito do mouse no banco de dados para o qual você deseja restaurar os arquivos trn
  2. Selecionar tarefas
  3. Selecione Restaurar
  4. Selecione Bancos de dados ... yup, aquele
  5. Clique no dispositivo
  6. Clique na elipse
  7. Adicionar arquivo
  8. Navegue até o local dos arquivos de log de transações. Certifique-se de que eles são classificados por data e hora no local de backup, se não falharem, fora de sequência
  9. Selecione o primeiro arquivo, mantenha pressionada a tecla Shift no teclado e selecione o último arquivo.
  10. Clique em Adicionar
  11. Clique em OK
  12. Escolha seu banco de dados de destino. Você pode ter que ir para os Arquivos e alterar o local da Restauração Como para refletir seus arquivos MDF e LDF de destino.
  13. Em seguida, clique em OK

Boa sorte.

    
por 02.11.2016 / 19:47