Perché TO DISK = N’NUL’?
Non capisco perché stai usando TO DISK = N’NUL’:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
In tal caso, il backup viene salvato in NUL, (cioè = nel nulla / niente) e non può essere utilizzato perché il suo file non esiste.
Sebbene NULpossa essere utilizzato anche come destinazione per i backup di LOG, non dovrebbe essere utilizzato neanche, in particolare sui server Prod perché i log andranno persi e la catena di backup verrà interrotta. (~ simile a a SHRINKFILE)
LOG Backup
Prima di aggiungere un DB al gruppo, è necessario prepararlo. Quando si desidera preparare un DB secondario, è necessario eseguire e ripristinare almeno 1 backup del registro delle transazioni. Il mirror lo utilizza per capire quali transazioni sono già state sincronizzate sul DB secondario e quali transazioni non sono ancora sincronizzate con il DB primario.
Pertanto è necessario eseguire il backup dei registri delle transazioni sul DB primario:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
L' COPY_ONLYopzione deve essere utilizzata. Si assicura che i log non vengano troncati al termine del backup del LOG.
Catena di backup del database primario
Tuttavia, non è possibile ripristinare un backup del log da solo, ovvero senza una catena di backup (vedere anche la risposta Kin). Ciò significa che il backup del registro delle transazioni deve essere eseguito dopo che è stato eseguito un backup COMPLETO del database (+ un differenziale opzionale se necessario).
Poiché l' COPY_ONLYopzione non interrompe la catena di backup, non crea nemmeno una catena di backup. L' COPY_ONLYopzione non può essere utilizzata per il backup del database.
Backup in ordine:
- Backup COMPLETO del database senza l'
COPY_ONLYopzione
- Backup differenziale opzionale
- 1 LOG Backup con
COPY_ONLYopzione
- un altro (o più) backup LOG, se necessario ...
Ripristina il DB secondario
Quindi il backup del database deve essere ripristinato (+ differenziale) sul secondario.
Deve essere ripristinato con l' NORECOVERYopzione perché si desidera ripristinare anche i backup LOG una volta ripristinato il backup COMPLETO.
Infine, ripristinerai LOG Backup. È comunque necessario utilizzare l' NORECOVERYopzione perché il mirror continuerà a ripristinare le transazioni una volta in atto.
- Ripristina il backup COMPLETO con l'
NORECOVERYopzione
- Ripristina il backup DIFF con l'
NORECOVERYopzione
- Ripristina tutti i backup del LOG in ordine con l'
NORECOVERYopzione
Mettiamo tutto insieme (adattalo al tuo ambiente)
Sul server primario eseguire:
USE master
Go
BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
GO
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
GO
Sul server secondario eseguire:
USE master
Go
RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
È quindi possibile procedere con l'aggiunta del nuovo DB secondario al gruppo di disponibilità ...
Azioni opzionali
- È meglio impostare l'opzione DISK su una cartella condivisa disponibile sia dal server primario che secondario.
- È anche meglio archiviare i file DB su disco e posizione simili sia sul server primario che su quello secondario.