Restaurar banco de dados usando a GUI - arquivo incorreto para restaurar


20

Estou apenas brincando com a interface gráfica do SSMS e estudando as opções da tarefa "restaurar".

Uma coisa que notei é quando clico em "gerar script", a primeira linha da consulta é:

 RESTORE DATABASE [MyDatabase] FROM  DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5 ( and a lot of log backups for point in time )

Ok, não há problema, mas estou fazendo backups diários desse banco de dados. esse Database_name_LOGSHIPPING.BKPera o nome do arquivo que eu criei para o envio de logs há um mês.

Por que quando tento usar a interface gráfica do SSMS para restaurar um backup, ele aponta para esse arquivo de backup? Eu nem tenho mais esse arquivo.


Com esta consulta do MSSQLTIPS, posso ver todos os backups desse banco de dados:

SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)   and  msdb..backupset.type ='D'
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date 

insira a descrição da imagem aqui

O que pode estar errado aqui? Não estou usando SOMENTE CÓPIA.


EDIT2:

Estou fazendo backups manuais diários para testar e, mesmo assim, o SQL Server seleciona o backup antigo que não existe mais. Ao executá- RESTORE HEADERONLY...lo, diz (obviamente) que o arquivo não existe.


EDIT 3:

Essa impressão da GUI:

1 1 insira a descrição da imagem aqui Uau Uau Uau ESPERE UM MINUTO !

Esse banco de dados foi uma restauração de outro servidor (mesmo servidor, instâncias diferentes). Huuum ... Eu acho que o problema está aqui.

Vocês podem ver no "servidor" na segunda foto? possui 2 servidores. Estou usando aquele com a instância de nomes GDLIC2014.

o script:

insira a descrição da imagem aqui

O script de backup:

DECLARE @Patch varchar(1000)

SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp') 

BACKUP DATABASE DATABASE TO DISK=@Patch with compression

Com a mesma consulta do MSSQLTIPS, eu pude encontrar esses resultados, usando-o sem intervalo de datas:

insira a descrição da imagem aqui

O quadrado vermelho é o backup errado da instância mais antiga, o quadrado azul é o último backup realizado (a GUI deve usá-lo)

EDIT 4:

Bem, com esta consulta para listar o histórico de backup, vejo que todos os logs e todos os arquivos estão listados corretamente:

SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO

EDIT5:

Existe algo para reiniciar o cabeçalho do banco de dados

(Estou sem ideias)



11
Você configurou um rastreamento e, em seguida, percorreu as opções da GUI para capturar como o SSMS está obtendo as informações? Pode ser mais rápido ...
Steve Mangiameli

11
@RafaelPiccinelli - Sinto que algo simples está sendo esquecido, mas não tenho certeza do que é. Você restaurou o banco de dados msdb do original para a instância GDLIC2014? Alguma coisa pode estar usando a cadeia de conexão ou o caminho errado? Certamente, o SQL Server não está inventando dados para os backups e restaurações. (Como um aparte, é interessante que você esteja restaurando _2.mdf, _3.mdf e _4.mdf, mas não um .mdf ou um _1.mdf sem sufixo).
RLF

Saia usando a GUI para restaurar. Observe o disco ou fita de backup para determinar o que você realmente tem e comece a partir deles.
Anti-weakpasswords

Olá @ Senhas anti-fracas. Não não. Eu não uso GUI. Eu consulto a sequência do log e trabalho com ela. Eu estava curioso sobre a GUI, mas depois vi esse problema. Eu tento ficar longe da GUI o máximo que posso.
Racer SQL

Respostas:


1

As chances são de que algo nas tabelas do histórico de backup ficou fora de sincronia e a interface do usuário está indo para o último backup completo "consistente". Se você estiver realmente interessado em saber por que está fazendo o que está fazendo, inicie um rastreamento de criador de perfil limitado à sua conta, siga as etapas de restauração na GUI e revise os comandos capturados no rastreamento que mostram o que a interface do usuário está fazendo nos bastidores . Isso fornecerá a resposta definitiva que você está procurando.

Se você preferir passar disso, pode limpar seu histórico de backup via EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate()(dependendo da última vez em que o executou, convém limpá-lo um mês por vez) e, em seguida, obter um novo cheio, etc. suspeitaria que isso redefinirá a GUI para usar os backups adequados daqui para frente.

Por fim, outra opção é executar esse script criado por Wayne Sheffield . Pode fornecer mais informações sobre quaisquer problemas com a cadeia de backup. Não me deparei com isso até depois de postar esta resposta originalmente, mas espero que ajude alguém no futuro.


Hey @ john Obrigado por sua resposta .. Eu fiz um declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@dataE excluí a história. Vou fazer alguns testes para ver se funcionou. Obrigado.
Racer SQL

Olá @RafaelPiccinelli. Isso funcionou para você?
Kefash

ei @Kefash. Eu acho que não funcionou. Não me lembro agora. mas toda vez que recebo uma resposta, imediatamente voto e seleciono como resposta. Eu acho que não resolveu meu problema.
Racer SQL

@ john Eu preciso de uma correção para isso muuuito mal. seu problema foi resolvido?
Kefash 11/08

@RafaelPiccinelli Preciso corrigir isso, pois quando preciso restaurar um ponto para adicionar um banco de dados ao HAG, pode ser irritante. Eu sei que isso pode ser feito sem a GUI, mas os logs de transações são obtidos a cada 10 minutos. Quais foram suas outras abordagens?
Kefash 11/08
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.