Ripristina database utilizzando la GUI - File errato da ripristinare


20

Sto solo scherzando con l'interfaccia grafica SSMS e studiando le opzioni dell'attività di "ripristino".

Una cosa che ho notato è quando faccio clic su "genera script", la prima riga della query è:

 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, nessun problema, ma sto facendo backup giornalieri di questo database. questo Database_name_LOGSHIPPING.BKPera il nome del file che ho creato per il log shipping un mese fa.

Perché quando provo a utilizzare l'interfaccia grafica SSMS per ripristinare un backup, punta a questo file di backup? Non ho nemmeno più questo file.


Con questa query di MSSQLTIPS posso vedere tutti i backup da questo database:

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 

inserisci qui la descrizione dell'immagine

Cosa può esserci di sbagliato qui? Non sto usando SOLO COPIA.


EDIT2:

sto eseguendo backup manuali giornalieri per testare, e anche in questo modo, SQL Server seleziona quel vecchio backup che non esiste più. Durante l'esecuzione RESTORE HEADERONLY...dice (ovviamente) che il file non esiste.


EDIT 3:

Questa è la stampa della GUI:

1 inserisci qui la descrizione dell'immagine Wow Wow Wow ASPETTA UN MINUTO !

Questo database è stato un ripristino da un altro server (stesso server, istanze diverse). Huuum ... Penso che il problema sia qui.

Potete vedere su "server" nella seconda foto? ha 2 server. Sto usando quello con l'istanza dei nomi GDLIC2014.

il copione:

inserisci qui la descrizione dell'immagine

Lo script di 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

Con la stessa query di MSSQLTIPS, sono riuscito a trovare questi risultati, utilizzandolo senza intervallo di date:

inserisci qui la descrizione dell'immagine

Il quadrato rosso è il backup errato dell'istanza precedente, il quadrato blu è l'ultimo backup eseguito (la GUI dovrebbe usarlo)

MODIFICA 4:

Bene, con questa query per elencare la cronologia dei backup, vedo che ogni registro e completo sono elencati correttamente:

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:

C'è qualcosa per riavviare l'intestazione del database

(Sono senza idee)


3
Puoi provare a utilizzare l' ultima GUI di SSMS - 2014 ? Ci sono molte correzioni incorporate
Kin Shah,

1
Hai impostato una traccia e poi hai eseguito le opzioni della GUI per acquisire il modo in cui SSMS sta ottenendo le informazioni? Potrebbe essere più veloce ...
Steve Mangiameli,

1
@RafaelPiccinelli - Sento che qualcosa di semplice viene trascurato, ma non sono sicuro di cosa sia. Hai ripristinato il database msdb dall'originale all'istanza GDLIC2014? Qualcosa potrebbe usare la stringa o il percorso di connessione errati? Certamente SQL Server non sta recuperando i dati per i backup e i ripristini. (A parte, è interessante che stai ripristinando _2.mdf, _3.mdf e _4.mdf, ma non un .mdf non suffisso o un _1.mdf.)
RLF

Chiudere utilizzando la GUI per ripristinare. Guarda il disco o il nastro di backup per determinare cosa hai effettivamente e inizia da quelli.
Password anti-debole

Ciao @ Password anti-debole. No no Non uso la GUI. Interrogo la sequenza dei registri e ci lavoro. Ero solo curioso della GUI, ma poi ho visto questo problema. cerco di essere il più lontano possibile dalla GUI.
Racer SQL,

Risposte:


1

Le probabilità sono qualcosa nelle tabelle della cronologia di backup non sincronizzate e l'interfaccia utente sta per l'ultimo backup completo "coerente". Se sei davvero interessato al motivo per cui sta facendo ciò che sta facendo, avvia una traccia del profiler limitata al tuo account, segui i passaggi di ripristino nella GUI e rivedi i comandi acquisiti nella traccia che mostrano cosa sta facendo l'interfaccia utente dietro le quinte . Questo ti darà la risposta definitiva che stai cercando.

Se preferisci passare oltre questo, puoi cancellare la cronologia dei backup tramite EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate() (a seconda dell'ultima volta che hai eseguito questo, potresti voler cancellarlo un mese alla volta) e quindi fare un nuovo pieno, ecc. I sospetto che questo ripristinerà la GUI per utilizzare i backup corretti in futuro.

Infine, un'altra opzione è eseguire questo script creato da Wayne Sheffield . Potrebbe fornire ulteriori informazioni su eventuali problemi con la catena di backup. Non mi sono imbattuto in questo fino a quando non ho pubblicato questa risposta in origine, ma spero che aiuti qualcun altro in futuro.


Ehi @john Grazie per la tua risposta .. Ho fatto un declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@datae cancellato la cronologia. Farò alcuni test per vedere se ha funzionato. Grazie.
Racer SQL,

Ciao @RafaelPiccinelli. Ha funzionato per te?
Kefash,

hey @Kefash. PENSO che non abbia funzionato. Non ricordo ora. ma ogni volta che ricevo una risposta, voto immediatamente e seleziono come risposta. Penso che non abbia risolto il mio problema.
Racer SQL,

@john Ho bisogno di una correzione per questo tremendamente. il tuo problema è stato eventualmente risolto?
Kefash,

@RafaelPiccinelli Devo risolvere questo problema, poiché quando devo ripristinare un punto per dire aggiungere un database all'HAG può essere fastidioso. So che questo può essere fatto senza la GUI ma i registri delle transazioni vengono eseguiti ogni 10 minuti. Quali erano i tuoi altri approcci?
Kefash,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.