Sancho_hl 10 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 Moin, wenn es keine Fehlermeldungen im Log des SQL Server gibt, dann wird vermutlich das Backup-Skript gar nicht erst vollständig abgearbeitet. Sobald SQL Server ein Backup ausführt, sieht man das im Ereignisprotokoll. Gruß, Nils Zitieren Link zu diesem Kommentar
Sancho_hl 10 Geschrieben 28. Dezember 2012 Autor Melden Teilen Geschrieben 28. Dezember 2012 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. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 Moin, mal ehrlich - wie sollen wir dir auf deine Fragen antworten, wenn du uns weder sagst, wie dein Skript funktioniert noch uns Fehlermeldungen oder andere Beschreibungen gibst? Schöne Grüße, Nils Zitieren Link zu diesem Kommentar
MrCocktail 192 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 @Nils: Ist deine Glaskugel auch dauernd in der Werkstatt, wenn man sie mal braucht? *g* Zitieren Link zu diesem Kommentar
Sancho_hl 10 Geschrieben 28. Dezember 2012 Autor Melden Teilen Geschrieben 28. Dezember 2012 Ä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. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 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 Zitieren Link zu diesem Kommentar
Sancho_hl 10 Geschrieben 28. Dezember 2012 Autor Melden Teilen Geschrieben 28. Dezember 2012 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 Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 28. Dezember 2012 Melden Teilen Geschrieben 28. Dezember 2012 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 Zitieren Link zu diesem Kommentar
Sancho_hl 10 Geschrieben 28. Dezember 2012 Autor Melden Teilen Geschrieben 28. Dezember 2012 Ok, ich danke dir erstmal für deine Hilfe. Werde die Ausgabe mal erweitern und mich dann, sobald das Problem wieder Auftritt, nochmal melden :) Gruß Sancho Zitieren Link zu diesem Kommentar
philipp lenz 0 Geschrieben 30. Dezember 2012 Melden Teilen Geschrieben 30. Dezember 2012 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. Zitieren Link zu diesem Kommentar
Sancho_hl 10 Geschrieben 2. Januar 2013 Autor Melden Teilen Geschrieben 2. Januar 2013 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.