helmuthelmut2000
Goto Top

Ldf Datei von einer SQL DB immer klein halten

Hallo,

Ich habe folgendes Problem.

In einem SQL2008R2 Express habe ich eine DB wo sich immer die ldf Datei vergrößert.
Wenn ich dann über das SQL Manage Studio die Protoklldatei sichere und dann verkleinere,
dann ist die Datei wieder klein.
Wie kann ich das ändern, damit sich die Datei nicht mehr vergrößert.

In den Datenbankoptionen habe ich Wiederherstellungsmodell: Vollständig,
kann ich das einfach so auf Einfach stellen? Bringt das erwas?
Automatisch verkleinern steht bei mir auf False, ist das Richtig?

Dann wurde die DB einmal Ursprünglich in einem SQL2000 Express erstellt, dann
in einem SQL2005 mit sichern und wiederherstellen betrieben.
Und dann mit sichern und wiederherstellen auf einem SQL2008R2 läuft die jetzt.

Da steht jetzt der Kompatibilitätsgrad auf SQL Server 2000 (80).
Kann man das einfach auf SQL Server 2008 (100) umstellen?


Gruß
Helmut

Content-ID: 243836

Url: https://administrator.de/contentid/243836

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

jsysde
jsysde 16.07.2014 aktualisiert um 15:05:30 Uhr
Goto Top
Moin.

Du hast kein Problem. face-wink
Das Verhalten ist normal, bei "Wiederherstellungsmodell: Vollständig" wird eben ein Transaktionslog geschrieben, daher wird die ldf grösser. Aber: Wenn du täglich ein Transaktionslogbackup Vollbackup machst, werden die Änderungen mit ins Backup geschrieben und die Einträge aus dem Transaktionslog werden gelöscht - dadurch wird das File selbst zwar nicht kleiner, aber da nichts mehr drinsteht, können neue Einträge geschrieben werden, ohne dass das File weiter wächst.

Das Verkleinern ist imho Unsinn, also Zeit- und Resourcenverschwendung.

Wenn du das Wiederherstellungsmodel änderst, bist du nicht mehr in der Lage, nach einem Restore der Datenbank Rollbacks/Rollforwards auszuführen, sprich: Die Datenbank hat einen Zeitstempel des Backups und basta. Dann wird auch kein Transaktionslog angelegt und das ldf bleibt schön klein.

Die Kompatibilitätseinstellungen sind in diesem Zusammenhang völlig boogie, für das Funktionieren der Datenbank aber u.U. wichtig - verwendet die Software, für die diese Datenbank in Betrieb ist, eine Feature, dass es nur in SQL 2000 gibt, dann solltest du das tunlichst so lassen. Wenn das nicht gegeben ist, stell es hoch auf 2008.

Cheers,
jsysde
AndreasHoster
AndreasHoster 16.07.2014 um 14:41:22 Uhr
Goto Top
Aber: Wenn du täglich ein Vollbackup machst, werden die Änderungen mit ins Backup geschrieben und die Einträge aus dem Transaktionslog werden gelöscht
Das ist so nicht korrekt.
Ein Datenbankbackup ändert das Transaktionsprotokoll nicht. Dafür muß man Transaktionsprotokollsicherungen machen.
Deswegen gibt's im T-SQL sowohl Backup Database als auch Backup Log als Befehle.

Der Vorteil des Vollständigen Wiederherstellungsmodells ist, wie jsyde schon geschrieben hat, die Möglichkeit eine Point in Time Recovery zu machen, also die Sicherung bis zu einem bestimmten Zeitpunkt einzuspielen (dazu braucht man dann die Datenbank- und die Transaktionsprotokollsicherungen), während bei einfach gibt's nur den Stand, an dem das Backup gemacht wurde.
jsysde
jsysde 16.07.2014 um 15:04:04 Uhr
Goto Top
Moin.
Zitat von @AndreasHoster:
Ein Datenbankbackup ändert das Transaktionsprotokoll nicht. Dafür muß man Transaktionsprotokollsicherungen machen.

You're right. Sorry, da hab ich gepennt.

Cheers,
jsysde
drobskind
Lösung drobskind 16.07.2014, aktualisiert am 20.07.2014 um 19:30:15 Uhr
Goto Top
Eine Verkleinerung macht wenig Sinn.
Wie jsysde schon sagt, wächst das File danach ja eh wieder bis das nächste Backup läuft.
Eine Verkleinerung (Shrink) ist sogar von Nachteil, da dadurch das Transactionlog fragmentiert wird und somit die Performance der Datenbank beeinträchtigen kann.

http://blogs.technet.com/b/austria/archive/2011/03/08/sql-server-the-tr ...

Gruß
helmuthelmut2000
helmuthelmut2000 20.07.2014 um 19:30:22 Uhr
Goto Top
Hallo,

Ich habe das jetzt so gelöst:

Ich mache einmal am Tag eine kompl. Sicherung. Mit:

"C:\Programme\Microsoft SQL Server\100\Tools\binn\SQLCMD.EXE" -S server\distanz -E -i C:\db_backup\DB_Name.sql -o C:\db_backup\DB_Name_BackupLog.txt

Und jede stunde mach ich ein Backup von der Protokolldatei: So:

"C:\Programme\Microsoft SQL Server\100\Tools\binn\SQLCMD.EXE" -S server\distanz -E -i C:\db_backup\DB_Name_log.sql -o C:\db_backup\DB_Name_BackupLog_log.txt

Dann das ganze ein paar Tage beobachtet und die Datei bleibt klein.

Gruß
Helmut