Protokollversand - MIT STANDBY WIEDERHERSTELLEN - unter SQL Server 2012 wird immer wieder unterbrochen

10

Wir verwenden den Protokollversand und RESTORE WITH STANDBYSQL Server 2012, um die Datenbank für Berichtszwecke im schreibgeschützten Modus wiederherzustellen. Das Setup für den Protokollversand wird jedoch nach Abschluss einer Wiederherstellung von ein oder zwei Protokollsicherungen immer wieder unterbrochen. Der Protokollversand wird nur unterbrochen, wenn er ausgeführt wird RESTORE WITH STANDBY. RESTORE WITH NORECOVERYverursacht keine Probleme.

Meine einzige Intuition dazu ist, dass die Primärdatenbank nicht so dynamisch ist. Wenn also keine Transaktionen vorhanden sind, führt dies RESTOREmöglicherweise zu Problemen mit dem Prozess.

Irgendwelche Ideen, bekannte Korrekturen?

Ich habe es ein paar Tage lang arbeiten lassen, indem ich einen regulären Job ausgeführt habe, bei dem zwei Tabellen stark aktualisiert werden. Wenn der Job nicht mehr ausgeführt werden konnte, schlug die Einrichtung des Protokollversands schnell fehl und die TRN-Datei konnte nicht verarbeitet werden. Ich habe den Protokollversand zurückgesetzt und versucht, durch ein kleines Update festzustellen, ob er weiterhin ausgeführt werden kann. Dabei habe ich den Wert einer Spalte eines Datensatzes in einer Tabelle geändert, unabhängig davon, wer immer noch fehlgeschlagen ist.

Vielen Dank für alle Ihre Antworten.

PS: Ein Auszug aus unserem Logbuch

25.02.2013 13: 00: 00, LSRestore_DBDB01-A_BulldogDB, In Bearbeitung, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, Protokolltransport-Wiederherstellungsprotokolljobschritt. ,, 2013-02-25 13: 00: 12.31 *** Fehler: Die Protokollsicherungsdatei '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' konnte nicht auf die sekundäre Datenbank 'BulldogDB' angewendet werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.31 *** Fehler: Bei der Verarbeitung des Protokolls für die Datenbank 'BulldogDB' ist ein Fehler aufgetreten. Wenn möglich aus Backup sichern. Wenn keine Sicherung verfügbar ist, muss das Protokoll möglicherweise neu erstellt werden.
Während der Wiederherstellung ist ein Fehler aufgetreten, der den Neustart der Datenbank 'BulldogDB' (8: 0) verhindert hat. Diagnostizieren Sie die Wiederherstellungsfehler und beheben Sie sie oder stellen Sie sie von einem bekanntermaßen guten Backup wieder her. Wenn Fehler nicht behoben oder erwartet werden, wenden Sie sich an den technischen Support.
RESTORE LOG wird abnormal beendet.
Verarbeitete 0 Seiten für die Datenbank 'BulldogDB' Datei 'BulldogDB' in Datei 1.
1 Seiten für die Datenbank 'BulldogDB' Datei 'BulldogDB_log' in Datei 1 verarbeitet. (. Net SqlClient Data Provider) ***
2013-02-25 13: 00: 12.32 *** Fehler: Verlauf / Fehlermeldung konnte nicht protokolliert werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Fehler: ExecuteNonQuery erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.32 Überspringen der Protokollsicherungsdatei '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' für die sekundäre Datenbank 'BulldogDB', da die Datei nicht überprüft werden konnte.
2013-02-25 13: 00: 12.32 *** Fehler: Verlauf / Fehlermeldung konnte nicht protokolliert werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Fehler: ExecuteNonQuery erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Fehler: Beim Wiederherstellen des Datenbankzugriffsmodus ist ein Fehler aufgetreten. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Fehler: ExecuteScalar erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Fehler: Verlauf / Fehlermeldung konnte nicht protokolliert werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Fehler: ExecuteNonQuery erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Fehler: Beim Wiederherstellen des Datenbankzugriffsmodus ist ein Fehler aufgetreten. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Fehler: ExecuteScalar erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Fehler: Verlauf / Fehlermeldung konnte nicht protokolliert werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Fehler: ExecuteNonQuery erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***
2013-02-25 13: 00: 12.33 Löschen alter Protokollsicherungsdateien. Primärdatenbank: 'BulldogDB'
2013-02-25 13: 00: 12.33 *** Fehler: Verlauf / Fehlermeldung konnte nicht protokolliert werden. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Fehler: ExecuteNonQuery erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist geschlossen. (System.Data) ***, 00: 00: 12,0,0 ,,,, 0
Mendel
quelle
Es bricht ein, dass der LS_Restore-Job die Transaktionsprotokollsicherung nicht anwenden kann. Ich habe gerade den Protokollversand zurückgesetzt, damit alle Fehlerprotokollinformationen aus der Datenbank entfernt werden. Ich habe sie irgendwo gespeichert, ich werde sie veröffentlichen, wenn ich sie finden kann. Vielen Dank.
Mendel
Wir erhalten so etwas wie "Überspringen der Protokollsicherungsdatei ... .trn für die sekundäre Datenbank 'DB', da die Datei nicht überprüft werden konnte . Ich weiß nicht, wie Sie speziell auf Beschädigungen prüfen würden.
Mendel

Antworten:

4

Wenn die Protokollsicherungen wiederhergestellt werden können, während sich die sekundäre Datenbank in NORECOVERY befindet, und nur dann fehlschlagen, wenn sie sich in READ-ONLY / STANDBY befindet, würde ich davon ausgehen, dass die Protokollsicherungen selbst in Ordnung und nicht beschädigt sind.

Möglicherweise hat Ihre Berichtskomponente eine offene Verbindung zur Datenbank. Daher kann beim Wiederherstellen der Protokolldatei aufgrund der offenen Verbindungen keine exklusive Verbindung zur Datenbank hergestellt werden. Beim Einrichten des Protokollversands besteht die Möglichkeit, Verbindungen zu trennen, damit die Protokollsicherung wiederhergestellt werden kann.

Ian Chamberland
quelle
1
Das ist richtig. Um dies zu umgehen, lassen Sie die Logshipping-Jobs nicht im Standby-Modus wiederherstellen, sondern fügen Sie dem Job, der im Standby-Modus wiederhergestellt wird, einen zweiten Schritt hinzu. RESTORE DATABASE [Datenbank] mit STANDBY = N'standbyfile '. Eine andere Option wäre, dass die Transaktionsprotokollsicherung nicht abgeschlossen ist. Versuchen Sie, 20 Minuten Verzögerung für die Wiederherstellungen hinzuzufügen
Spörri
1

Im Standby-Modus Bei der sekundären Wiederherstellung werden Benutzer nur getrennt, wenn der Job gestartet wird. Nach dem Start können Benutzer eine Verbindung herstellen. Dadurch wird der Wiederherstellungsprozess mit dem Fehler "Exklusiver Zugriff" gestoppt. Ich habe einen Dienst erhalten, der versucht hat, während der Wiederherstellung eine Verbindung zur Standby-Datenbank herzustellen. Dadurch wurde der Wiederherstellungsprozess nach 1-10 / 100 wiederhergestellten Dateien unterbrochen.

Wiedzm
quelle