Log Pengiriman - KEMBALIKAN DENGAN STANDBY - di SQL Server 2012 terus rusak

10

Kami menggunakan pengiriman log dan RESTORE WITH STANDBYpada SQL Server 2012 untuk mengembalikan database dalam mode read-only untuk tujuan pelaporan. Namun, pengaturan pengiriman log terus rusak setelah menyelesaikan pengembalian satu atau dua cadangan log. Log-pengiriman hanya rusak saat dijalankan sebagai RESTORE WITH STANDBY; RESTORE WITH NORECOVERYtidak menyebabkan masalah.

Intuisi saya satu-satunya tentang ini adalah bahwa basis data primer tidak begitu dinamis. Karena itu, ketika tidak ada transaksi, ini menyebabkan masalah dengan RESTOREprosesnya, mungkin?

Ada ide, perbaikan yang dikenal?

Saya membuatnya bekerja selama beberapa hari dengan menjalankan pekerjaan rutin yang melakukan pembaruan berat pada dua tabel. Ketika pekerjaan berhenti menjalankan pengaturan pengiriman log dengan cepat gagal, tidak dapat memproses file .trn. Saya mengatur ulang pengiriman log dan mencoba untuk melihat apakah itu akan tetap berjalan dengan hanya melakukan pembaruan kecil, mengubah nilai satu kolom dari satu catatan dalam sebuah tabel, siapa pun yang masih gagal.

Terima kasih atas semua tanggapan Anda.

PS: Kutipan dari log kami

02/25/2013 13: 00: 00, LSRestore_DBDB01-A_BulldogDB, Sedang Berlangsung, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, Pengiriman log mengembalikan langkah pekerjaan log. ,, 2013-02-25 13: 00: 12: *** ***: Tidak dapat menggunakan file cadangan log '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' ke database sekunder 'BulldogDB'. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.31 *** Kesalahan: Terjadi kesalahan saat memproses log untuk basis data 'BulldogDB'. Jika mungkin pulihkan dari cadangan. Jika cadangan tidak tersedia, mungkin perlu untuk membangun kembali log.
Kesalahan terjadi selama pemulihan mencegah database 'BulldogDB' (8: 0) dari restart. Diagnosis kesalahan pemulihan dan perbaiki atau pulihkan dari cadangan yang dikenal baik. Jika kesalahan tidak diperbaiki atau diharapkan hubungi Dukungan Teknis.
RESTORE LOG berakhir secara tidak normal.
Diproses 0 halaman untuk database 'BulldogDB' file 'BulldogDB' pada file 1.
Diproses 1 halaman untuk database 'BulldogDB' file 'BulldogDB_log' pada file 1. (. Net SqlClient Data Provider) ***
2013-02-25 13: 00: 12.32 *** Kesalahan: Tidak dapat mencatat riwayat / pesan kesalahan. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Kesalahan: ExecuteNonQuery membutuhkan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.32 Melewati file cadangan log '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' untuk database sekunder 'BulldogDB' karena file tidak dapat diverifikasi.
2013-02-25 13: 00: 12.32 *** Kesalahan: Tidak dapat mencatat riwayat / pesan kesalahan. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Kesalahan: ExecuteNonQuery membutuhkan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: Terjadi kesalahan saat memulihkan mode akses basis data. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: ExecuteScalar memerlukan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: Tidak dapat mencatat riwayat / pesan kesalahan. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: ExecuteNonQuery membutuhkan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: Terjadi kesalahan saat memulihkan mode akses basis data. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: ExecuteScalar memerlukan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: Tidak dapat mencatat riwayat / pesan kesalahan. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: ExecuteNonQuery membutuhkan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***
2013-02-25 13: 00: 12.33 Menghapus file cadangan log lama. Basis Data Primer: 'BulldogDB'
2013-02-25 13: 00: 12.33 *** Kesalahan: Tidak dapat mencatat riwayat / pesan kesalahan. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Kesalahan: ExecuteNonQuery membutuhkan Koneksi yang terbuka dan tersedia. Status koneksi saat ini ditutup. (System.Data) ***, 00: 00,012 ,,,, 0
Mendel
sumber
Terobosan dalam pekerjaan LS_Restore tidak dapat menerapkan cadangan log transaksi. Saya baru saja mengatur ulang pengiriman log sehingga semua informasi log kesalahan hilang dari database. Saya memiliki mereka disimpan di suatu tempat, saya akan mempostingnya ketika saya dapat menemukannya. Terima kasih.
Mendel
Kami mendapatkan sesuatu seperti "Melewati file cadangan log ... .trn untuk database sekunder 'DB' karena file tersebut tidak dapat diverifikasi . Saya tidak tahu bagaimana Anda akan secara khusus memeriksa korupsi.
Mendel
Tautan yang diperbarui: feedback.azure.com/forums/908035-sql-server/suggestions/… .
Anthony Horne

Jawaban:

4

Jika cadangan log dapat dipulihkan saat database sekunder dalam NORECOVERY dan hanya gagal ketika dalam BACA-HANYA / STANDBY maka saya akan menganggap cadangan log itu sendiri ok dan tidak rusak.

Bisa jadi komponen pelaporan Anda memiliki koneksi terbuka ke database sehingga ketika mengembalikan file log itu tidak dapat memperoleh koneksi eksklusif ke database karena koneksi terbuka. Akan ada opsi ketika mengatur pengiriman log untuk memutuskan koneksi apa pun untuk memungkinkannya memulihkan cadangan log.

Ian Chamberland
sumber
1
Ini benar. Untuk menyiasati hal ini jangan biarkan pekerjaan logshipping dikembalikan dengan siaga tetapi tambahkan langkah kedua ke pekerjaan yang akan dipulihkan dengan siaga. KEMBALIKAN DATABASE [database] dengan STANDBY = N'standbyfile '. Opsi lain adalah pencadangan log transaksi belum selesai, coba tambahkan penundaan 20 menit untuk
pemulihan
1

Pada keadaan siaga, pemulihan sekunder hanya akan memutus hubungan pengguna saat pekerjaan dimulai, setelah pengguna mulai dapat terhubung ... dan ini akan menghentikan proses pemulihan dengan kesalahan tentang "akses eksklusif". Saya mendapat layanan yang mencoba terhubung ke database siaga saat dalam pemulihan. Itu membuat proses pemulihan untuk istirahat setelah 1-10 / 100 file dipulihkan.

Wiedzm
sumber