Saya memiliki situasi yang tidak mudah dipecahkan, dan saya pikir saya akan bertanya di forum ini jika ada orang lain yang memiliki saran.
Saya menjalankan SQL Server 2008 R2 Standard SP3 pada Windows Server 2008R2 Enterprise.
Basis data membutuhkan beberapa pemeliharaan, dan setelah itu saya perlu memulihkan di server lain. Saya memiliki cadangan db penuh yang dilakukan dengan COPY_ONLY ditambah satu set cadangan 4 tlog.
- sebelum memulai, buat tlogbackup1
- berubah dari
FULL
keBULK_LOGGED
model pemulihan - tambahkan filegroup baru
- tambahkan file ke newfilegroup
- atur newfilegroup menjadi default
- pilih ke dalam tabel (di newfilegroup)
- jatuhkan meja asli
- hapus file asli
- hapus filegroup asli
- ubah nama tabel baru agar sesuai dengan tabel asli
- ubah nama file newfilegroup agar sesuai dengan filegroup asli
- ubah nama file dalam katalog agar sesuai dengan nama file asli
- ubah nama file pada level OS untuk mencocokkan nama file asli
- atur filegroup default menjadi yang asli
- bawa db online
- berubah dari
BULK_LOGGED
keFULL
model pemulihan - Setelah semua langkah selesai, buat tlogbackup2
Pemulihan semua cadangan harus menggunakan WITH MOVE, karena perubahan huruf drive di server pemulihan.
Langkah pemulihan:
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
Pemulihan tlog akhir mencapai 100% dan kemudian gagal dengan kesalahan 3456:
Diproses 368 halaman untuk database 'SomeDB', file 'SystemData' pada file 1.
Diproses 7656520 halaman untuk database 'SomeDB', file 'SystemDataPDS' pada file 1.
Diproses 172430 halaman untuk database 'SomeDB', file 'SystemData_log' pada file 1.
Msg 3456, Level 16, Negara 1, Baris 1
Tidak dapat mengulang catatan log (210388: 123648: 232), untuk ID transaksi (0: 1016710921), di halaman (4: 8088), database 'SomeDB' (ID database 6) . Halaman: LSN = (0: 0: 1), jenis = 11. Log: OpCode = 4, konteks 11, PrevPageLSN: (210388: 122007: 1). Pulihkan dari cadangan database, atau perbaiki database. Msg 3013, Level 16, Status 1, Jalur 1 LOG RESTORE berakhir secara tidak normal.
Hanya untuk memverifikasi bahwa cadangan db penuh baik-baik saja, saya mengembalikannya berlari CHECKDB
, dan tidak ada kesalahan.
Semua umpan balik disambut.
Terima kasih sebelumnya,
Ned Otter