Posso ripristinare un database SQL da Standby / Sola lettura senza un file di standby?


8

Esiste un modo per ripristinare un database SQL dalla modalità Standby / Sola lettura se manca il "file di standby"?

(Vedo alcuni riferimenti che lo chiamano file TUF in uno scenario di log shipping, ma nel mio caso era solo un ripristino manuale e il file di standby aveva un'estensione BAK.)

Effettuare un "RESTAURO DATABASE con RECUPERO" provoca un errore fatale:

During startup of warm standby database 'foo', its standby file
('path\filename.bak') was inaccessible to the RESTORE statement.
The operating system error was '5(Access is denied.)'. Diagnose the
operating system error, correct the problem, and retry startup.

Il ripristino è stato eseguito qualche tempo fa e sfortunatamente il file di standby si trovava nella cartella di backup ed è stato rimosso dalla nostra routine di pulizia delle cartelle. Non esiste alcuna copia del file su nessun altro supporto. Anche i backup originali utilizzati per il ripristino fino a questo punto sono spariti da tempo.

Fortunatamente questo non è un grosso problema per noi (è stato un ripristino temporaneo), ma non ho trovato altri riferimenti utili là fuori su questa domanda, oltre a "non rimuovere quel file".

Se fosse arrivato a questo, suppongo di poter scrivere l'intero database o utilizzare SSIS per copiare tutti gli oggetti in un nuovo contenitore di database, poiché ho una copia di sola lettura del db davanti a me.

Un modo per risolvere questo problema? Sicuramente non mi aspetto di poterlo riportare al "ripristino" e continuare a fare ripristini successivi o altro, mi piacerebbe solo forzarlo nella normale modalità online nel suo stato attuale, in modo da poterlo fare cose come cambiare i permessi, o cambiare la modalità di recupero, o prendere un nuovo backup completo o qualcosa del genere.

Risposte:


7

Si scopre che può essere fatto se si utilizza CONTINUE_AFTER_ERROR

RESTORE DATABASE foo WITH RECOVERY, CONTINUE_AFTER_ERROR

Ho ancora ricevuto un avviso quando l'ho provato, ma poi ho fatto un CONTROLLO e non ho ricevuto errori.

RESTORE WITH CONTINUE_AFTER_ERROR was successful but some damage was encountered. Inconsistencies in the database are possible.
RESTORE DATABASE successfully processed 0 pages in 4.180 seconds (0.000 MB/sec).
Msg 3441, Level 17, State 1, Line 13
During startup of warm standby database 'foo' (database ID 46), its standby file ('C:\MSSQL\Backup\foo_standby') was inaccessible to the RESTORE statement. The operating system error was '2(The system cannot find the file specified.)'. Diagnose the operating system error, correct the problem, and retry startup.

Dato l'avvertimento, non sono sicuro al 100% se lo provassi su un database di produzione in cui non avevo un buon backup. Dato che si tratta di un ripristino temporaneo, potrebbe valere la pena provarlo.

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.