Ho una situazione che non è facile da capire e ho pensato di chiedere a questo forum se altri potessero avere dei suggerimenti.
Sto eseguendo SQL Server 2008 R2 Standard SP3 su Windows Server 2008R2 Enterprise.
Un database aveva bisogno di un po 'di manutenzione e dopo il fatto avevo bisogno di ripristinare su un altro server. Ho eseguito un backup completo del db con COPY_ONLY e un set di 4 backup di tlog.
- prima di iniziare, crea tlogbackup1
- passare da
FULL
alBULK_LOGGED
modello di recupero - aggiungi nuovo filegroup
- aggiungi il file a newfilegroup
- imposta newfilegroup come predefinito
- seleziona in tabella (su newfilegroup)
- rilasciare la tabella originale
- elimina il file originale
- elimina il filegroup originale
- cambia il nome della nuova tabella in modo che corrisponda alla tabella originale
- cambia il nome del file di newfilegroup in modo che corrisponda al filegroup originale
- cambia il nome del file nel catalogo in modo che corrisponda al nome del file originale
- cambia il nome del file a livello di sistema operativo in modo che corrisponda al nome del file originale
- imposta il filegroup predefinito come originale
- portare online db
- passare da
BULK_LOGGED
alFULL
modello di recupero - Dopo aver completato tutti i passaggi, creare tlogbackup2
Il ripristino di tutti i backup deve utilizzare WITH MOVE, a causa delle modifiche delle lettere di unità sul server di ripristino.
Passaggi di recupero:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup1.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup2.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
Il ripristino finale di tlog arriva al 100% e quindi non riesce con errore 3456:
368 pagine elaborate per il database "SomeDB", file "SystemData" sul file 1.
Elaborate 7656520 pagine per il database "SomeDB", file "SystemDataPDS" sul file 1.
172430 pagine elaborate per il database "SomeDB", file "SystemData_log" sul file 1.
Messaggio 3456, livello 16, stato 1, riga 1
Impossibile ripetere il registro (210388: 123648: 232), per ID transazione (0: 1016710921), a pagina (4: 8088), database 'SomeDB' (ID database 6) . Pagina: LSN = (0: 0: 1), tipo = 11. Log: OpCode = 4, contesto 11, PrevPageLSN: (210388: 122007: 1). Ripristinare da un backup del database o ripristinare il database. Messaggio 3013, livello 16, stato 1, riga 1 RIPRISTINA LOG si sta chiudendo in modo anomalo.
Solo per verificare che il backup completo del db fosse corretto, l'ho ripristinato CHECKDB
e non si sono verificati errori.
Tutti i feedback sono stati ben accolti.
Grazie in anticipo,
Lontra di Ned