none
Logshipping während Wartung abschalten möglich? RRS feed

  • Frage

  • Hallo Leute,

    ich habe eine Frage zum Thema Logshipping. Auf einem SQL2005 Server ist Logshipping eingerichtet. Die Logshipping ist so eingerichtet, das alle Logs im Intervall von 15 Minuten auf den Secondary Server ebenfalls SQL2005 übertragen werden.

    Laut Eventlog Windows/SQL Server funktioniert dies problemlos.

    Jedes Wochenende läuft ein aufwendiger Wartungsplan, der einen Datenbankreorg durchführt. Dieser Reorg bringt das Logshipping durcheinander.

    Im Errorlog des SQL Servers sind folgende Einträge zu finden:

    xx/xx/xxxx 03:44:01,spid149,Unknown,The log shipping primary database xxx has backup threshold of 45 minutes and has not performed a backup log operation for 13 minutes. Check agent log and logshipping monitor information.
    xx/xx/xxxx 03:44:01,spid149,Unknown,Error: 14420<c/> Severity: 16<c/> State: 1.

    Diese Meldungungen werden während der gesamten Laufzeit des Reorg angezeigt. Das Verhalten des Servers normalisiert sich dann wieder. Die Meldungen kommen aber jedes Wochenende wieder.

    Kann man dieses Verhalten abschalten. Ich hatte überlegt die Datenbank kurz vor dem Reorg in den Modus Simple zu versetzen. Habe allerdings keine Erfahrungswerte.

    Welche Erfahrungen habt ihr damit gemacht? Bzw. wie kann man das Problem angehen?

    Gruß

    Sniffman

    Donnerstag, 14. Juni 2012 08:11

Antworten

  • Hallo!

    Du findest im SQL Server Agent einen Job (keinen Wartungsplan), der für die Überwachung des LogShippings verantwortlich ist.

    http://msdn.microsoft.com/de-de/library/ms187103.aspx

    Warnungsauftrag:

    Ein SQL Server-Agent-Auftrag, der Warnungen für primäre und sekundäre Datenbanken auslöst, wenn ein Sicherungs- oder ein Wiederherstellungsvorgang nicht erfolgreich innerhalb eines angegebenen Schwellenwerts abgeschlossen wird. Wenn der Protokollversand in einer Datenbank aktiviert ist, wird die Auftragskategorie "Protokollversandwarnung"in der Überwachungsserverinstanz erstellt.

    Falls Du einen englischen Server hast, hast Du die job category "Log Shipping Alert" .

    Du kannst Dir alle Jobs anzeigen lassen mit diesem SQL, wobei Du die Where-Bedingung entsprechend anpassen oder weglassen musst:

    select *
    from msdb..sysjobs j
    inner join msdb..sysjobsteps js
    on j.job_id = js.job_id
    inner join msdb..syscategories c
    on j.category_id = c.category_id 
    where c.name = 'Log Shipping Alert';
    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu


    Einen schönen Tag noch, Christoph -- Microsoft SQL Server MVP www.insidesql.org/blogs/cmu

    • Als Antwort markiert Sniffman Dienstag, 26. Juni 2012 06:18
    Dienstag, 26. Juni 2012 06:11
    Beantworter

Alle Antworten

  • Hallo Sniffman,
    setzte die Datenbank auf Simple und das LogShipping ist beendet! Anschließend musst Du alles neu einrichten.

    Also Finger weg davon.

    Was ist los? Der Server steht mächtig unter Dampf und die Transaktionslogsicherungen können nicht so schnell generiert werden, wie es erwartet wird.
    Was kann man tun?
    1.) Last reduzieren, evtl. Waits in den Reorg einbauen
    2.) Warnungen ignorieren für den Zeitraum des Reorgs
    3.) Den Job, welcher für die Überwachung des Logshippings zuständig ist einfach im Zeitplan so abändern, dass die Überwachung während des Reorgs reduziert wird.

    Was machst Du denn für Wartungen? Ein Rebuild auf alle Indizes, oder auch evtl. nur ein Reorg, falls die Fragmentierung kleiner ist?
    Ich hoffe, dass Shrinken von Datenbankfiles nicht zu Deinem Reorg gehört.
     Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort vorgeschlagen Alex Pitulice Mittwoch, 20. Juni 2012 07:01
    • Als Antwort markiert Alex Pitulice Donnerstag, 21. Juni 2012 06:36
    • Tag als Antwort aufgehoben Sniffman Montag, 25. Juni 2012 12:57
    Donnerstag, 14. Juni 2012 08:27
    Beantworter
  • Hallo Sniffman,
      
    Ist Deine Situation eigentlich abgeklärt? Wenn ja - bitte markiere den Beitrag von Christoph "als Antwort".
     
    Viele Grüße,
    Alex

    Alex Pitulice, MICROSOFT 
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.


    Mittwoch, 20. Juni 2012 07:00
  • Hallo Christoph,

    vielen Dank für deine Antwort. Im Moment tappe ich hier immer noch im Dunkeln.

    Um den Plan mit der Überwachung umzusetzen muss ja lediglich der Schedule des Jobs angepasst werden der das Logshipping überwacht.

    Die Wartungspläne die konfiguriert sind laufen nicht zu der Zeit wo das Problem auftritt.

    Nun wäre die Frage ob es sein kann, dass der entsprechende Kontrolljob gar nicht als Wartungsplan läuft sondern irgendwo anders zu finden ist.

    Gibt es ein Script wie man sich alle Jobs eines Servers anzeigen lassen kann?

    Gruß

    Sniffman

    Montag, 25. Juni 2012 12:57
  • Hallo!

    Du findest im SQL Server Agent einen Job (keinen Wartungsplan), der für die Überwachung des LogShippings verantwortlich ist.

    http://msdn.microsoft.com/de-de/library/ms187103.aspx

    Warnungsauftrag:

    Ein SQL Server-Agent-Auftrag, der Warnungen für primäre und sekundäre Datenbanken auslöst, wenn ein Sicherungs- oder ein Wiederherstellungsvorgang nicht erfolgreich innerhalb eines angegebenen Schwellenwerts abgeschlossen wird. Wenn der Protokollversand in einer Datenbank aktiviert ist, wird die Auftragskategorie "Protokollversandwarnung"in der Überwachungsserverinstanz erstellt.

    Falls Du einen englischen Server hast, hast Du die job category "Log Shipping Alert" .

    Du kannst Dir alle Jobs anzeigen lassen mit diesem SQL, wobei Du die Where-Bedingung entsprechend anpassen oder weglassen musst:

    select *
    from msdb..sysjobs j
    inner join msdb..sysjobsteps js
    on j.job_id = js.job_id
    inner join msdb..syscategories c
    on j.category_id = c.category_id 
    where c.name = 'Log Shipping Alert';
    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu


    Einen schönen Tag noch, Christoph -- Microsoft SQL Server MVP www.insidesql.org/blogs/cmu

    • Als Antwort markiert Sniffman Dienstag, 26. Juni 2012 06:18
    Dienstag, 26. Juni 2012 06:11
    Beantworter
  • Guten Morgen Christoph,

    vielen Dank für deine ausführliche Antwort. Das hilft mir wirklich weiter!

    Viele Grüße

    Sniffman

    Dienstag, 26. Juni 2012 06:18