Jump to content

DB-Backup - sichert nicht alle DBs


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Moin,

 

ich habe hier das Problem, das sporadisch (so ca. 4-5 mal im Monat) nicht alle Datenbanken gesichert werden. Es ist unterschiedlich welche DBs im Backup ausgelassen werden.

 

Der SQL-Server ist ein MSSQL Server 2005 SP4.

Das Wiederherstellungsmodell ist bei einigen DBs "Vollständig", bei anderen "Einfach".

Es wird täglich ein Full-Backup von jeder DB gemacht, bei den DBs die auf "Vollständig" eingestellt sind, wird stündlich ein LOG-Backup durchgeführt.

Nach dem Backup wird entweder ein reorganize oder rebuild des index durchgeführt.

Gesichert wird per tsql script.

 

Etwas genauer sieht die Sicherung so aus:

Der Backup-Server (bacula) führt das Backup Script für alle DBs aus, dann werden die .bak und .trn dateien auf den Backup-Server kopiert und komprimiert. Danach wird ein reorganize oder rebuild vom index durchgeführt, dann ein Update der Statistiken.

 

Bisher konnte ich das Problem nicht lokalisieren, es werden keine Fehler ausgegeben.

 

Ich hoffe, das mir jemand weiterhelfen oder einen Denkanstoß geben kann :)

 

Gruss

Sancho

Link zu diesem Kommentar

Da ich, was SQL angeht, nicht sehr erfahren bin:

Das das Script nicht vollständig durchläuft kann sehr gut sein, aber warum? :)

 

Der Backup-Server würde auf jeden Fall eine Meldung ausgeben, wenn ein Job abgebrochen wird.

 

Ist es ein Problem für den SQL-Server, wenn sich DB- und LOG-Backup überschneiden?

 

Im Eventlog sind Meldungen über erfolgte Sicherungen vorhanden. Natürlich nicht von den DBs, die "vergessen" wurden.

 

Was mir aufgefallen ist, für eine bestimmte DB "X" sind mehrfach Meldungen vorhanden:

CHECKDB für die 'X'-Datenbank wurde am 2012-12-03 00:45:33.450 (Ortszeit) ohne Fehler abgeschlossen. Diese Meldung dient nur zu Informationszwecken. Es ist keine Benutzeraktion erforderlich.

 

und

 

'X'-Datenbank wird gestartet

 

Edit:

Die oben genannten Einträge sind mehrfach vorhanden, für die DBs, deren Sicherung nicht gelaufen ist und deren Wiederherstellungsmodell auf "Einfach" steht. Fehler oder Warnungen liegen aber nicht vor.

Die DBs, deren Wiederherstellungsmodell auf "Vollständig" steht tauchen im Eventlog nicht auf, mit Ausnahme der Meldungen von der LOG Sicherung.

Link zu diesem Kommentar

Ähm ja sorry.

 

Fehlermeldungen sind, wie gesagt, keine vorhanden.

 

Das Script sieht so aus:

 

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @dbsubdir VARCHAR(256) -- db subfolder to create

SET @path = 'D:\SQLbackup\Sicherung'

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
      SET @dbsubdir = @path + '\' + @name
      EXECUTE master.dbo.xp_create_subdir @dbsubdir
      SET @fileName = @dbsubdir + '\' + @name + '_' + @fileDate + '.BAK'
      BACKUP DATABASE @name TO DISK = @fileName
      PRINT 'Backup: ' + @name + '_' + @filedate + CHAR(13)

      FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor

 

und es wird aufgerufen vom Backup-Server durch eine Batch mit folgendem Inhalt:

 

set DBSERVER=xxx
set DBUSER=sa
set DBPASSWD=xxx

osql.exe -S %DBSERVER% -U %DBUSER% -P %DBPASSWD% -i "C:\xxx\xxx\xxx\backup_user_db.sql"

 

Nach dem Job folgen dann noch reorganize bzw. reindex und update der statistiken. Diese laufen aber komplett durch laut logfile des backup servers.

Link zu diesem Kommentar
Moin,

 

wenn eine der Datenbanken nicht gesichert wurde, was für ein Sicherungsdatum gibt sie denn dann in ihren Eigenschaften an? Vielleicht ist das Backup als solches ja korrekt verlaufen, aber die Datei wird hinterher durch irgendwas gelöscht.

 

Gruß, Nils

 

Bei allen DBs, die nicht gesichert wurden, wird der 26.12. angegeben.

Stehen müsste dort allerdings der 27.12.

 

Hier die Einstellungen für zumindest eine der DBs

 

optionsa.jpg

Link zu diesem Kommentar

Moin,

 

ich vermute, dass das Backup-Skript manchmal unterwegs abbricht und dadurch nur einen Teil der Datenbanken sichert. Dass dies nicht immer dieselben sind, wäre dadurch zu erklären, dass die Abfrage von sysdatabases ohne Sortierung erfolgt.

 

Um den Dingen näher auf die Spur zu kommen, könnte man versuchen, das Skript um Ausgabefunktionen zu erweitern. Zumindest könntest du in dem Batch die osql-Zeile um eine Ausgabe erweitern:

 

osql.exe -S %DBSERVER% -U %DBUSER% -P %DBPASSWD% -i "C:\xxx\xxx\xxx\backup_user_db.sql" -o C:\Pfad\Ausgabe.txt

 

Nach einem fehlgeschlagenen Job dann mal in die Ausgabedatei schauen, ob was Verwertbares drinsteht.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo,

 

Das Phänomen habe ich schon mal gehabt. Hier sind die Tlog Sicherungen mit den Datenbank Sicherungen kollidiert. So wurden dann eben nur die Datenbanken gesichert, die gerade nicht von der Tlog Sicherung betroffen waren. Ggf. Da mal die Zeiten anpassen.

 

Weiter solltest Du dies besser über Wartungspläne machen. Das Logging funktioniert hier besser und Du kannst dies auch besser steuern.

 

Als nächstes solltest Du nicht einfach die Indizes Neu aufbauen oder reorganisieren, schau Dir besser mal die Konzepte zu dynamischer Indexwartung an.

 

Grüsse.

Link zu diesem Kommentar
Hallo,

 

Das Phänomen habe ich schon mal gehabt. Hier sind die Tlog Sicherungen mit den Datenbank Sicherungen kollidiert. So wurden dann eben nur die Datenbanken gesichert, die gerade nicht von der Tlog Sicherung betroffen waren. Ggf. Da mal die Zeiten anpassen.

 

Weiter solltest Du dies besser über Wartungspläne machen. Das Logging funktioniert hier besser und Du kannst dies auch besser steuern.

 

Als nächstes solltest Du nicht einfach die Indizes Neu aufbauen oder reorganisieren, schau Dir besser mal die Konzepte zu dynamischer Indexwartung an.

 

Grüsse.

 

Hi,

 

danke für deine Antwort.

Habe jetzt 2 zusätzliche Skripte geschrieben. Eines, welches vor dem Backup der DBs die Transaktionssicherung deaktiviert und eines, welches sie danach wieder aktiviert.

Den Zeitplan so anzupassen, dass in dem Zeitraum nicht gesichert wird, ist schwer, da der Backupserver für die Sicherung einen Zeitraum und keinen festen Zeitpunkt zugewiesen bekommen hat.

 

Mit der dynamischen Indexwartung werde ich mich dann auch mal beschäftigen.

 

Gruss

Sancho

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...