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.BKP
era 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
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:
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:
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:
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)
fonte
Respostas:
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.
fonte
declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@data
E excluí a história. Vou fazer alguns testes para ver se funcionou. Obrigado.