Autor Beitrag
BennyM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Di 27.08.02 08:55 
Hi Leute
ich hab ein Problem und zwar wir entwickeln mit der Datenbank MS SQL Server und gestern wollt ich einen ganz einfachen Befehl 'Delete from Rechpos' ausführen aber dann kam die Fehlermeldung dass mein Transaktionsprotokoll voll ist! Jetzt hab ich schon herausgefunden dass es daran gelegen hat dass meine Festplatte voll war da das Transaktionsprotokoll 1GB groß war!!! Ich hab auch herausgefunden dass man das TP verkleinern kann indem man

1. "Select * from sysfiles"
Im Ergebnis die FileID des Logfiles heraussuchen

2. "BACKUP LOG datenbank WITH NO_LOG"

3. "DBCC SHRINKFILE (FileID,100)"
100= Größe in MB

eingibt.
Jetzt bin ich mir nur nicht sicher ob es irgendeinen Nachteil oder sonstiges gibt worauf ich achten muss wenn ich das TP einfach verkleiner!
Vielleicht kann mir ja jemand helfen!
Mfg
Benny
Delta7
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 03.09.02 00:02 
Hi BennyM

Das transaktionsprotokoll wächst ins unendliche wenn Transaktionen offen bleiben, was mein Entwickeln schon mal passieren kann. (Kann man im Enterprise Manager nachprüfen und auch scliessen)
Ich arbeite auch auf MS SQL und habe die erfahrung gemacht, das man das Problem am einfachsten in den Griff bekommt, indem man für die betreffende Datenbank einen Maintenance Plan erstellt und am besten 1 x täglich ein komplettes Backup fährt. (Gleichzeitig kann man dabei auch einstellen, wie lange ein Backup aufgehoben werden soll bis es automatisch gelöscht wird.)
Das Problem mit dem Logfile ist, das es niemals kleiner wird, und der verbrauchte Platz im Logfile nur durch ein Backup freigegeben werden kann.

In der "heissen Phase" z.B. bei intensiven Schnittstellentests, habe ich auch schon mehrere backups täglich laufen lassen, das hilft.
Von einer regelmässigen shrink-Aktion kann ich nur abraten, das führt meist zu einer stark fragmentierten Festplatte, weil das Betriebssystem immer wieder neuen Platz für das Logfile braucht.
Defrag geht meines wisses nur bei bageschaltetem MS SQL Service, da der Service die DB Lockt. (Disk Keeper 7 könnte es schaffen, nie probiert)

Um nur dem Fehler zu entgehen, am besten eine genügend grosse Festplatte und die Maximale Grösse für das Transaction log NICHT beschränken. (Eine Beschränkung führt nicht zu einem kleinerem logfile, aber MS SQL verweigert den dienst, wenn das Ding voll läuft. (It's not a Bug , it's a feature *g*

Um das Logfile ganz loszuwerden, kann man ein komplettes backup machen, das ganze restoren (Force over existing) den MSSQL Server service abschalten und das transaktion log löschen (ACHTUNG: funktioniert nur unmittelbar nach dem restore - mit produktiven Daten würde ich dieses experiment aber nicht empfehlen.....
Dann wird ein neues Logfile angelegt, das halt wieder vor sichj hin wächst.


Hoffe das hilft ein wenig.

Thomas

_________________
Ein Byte hat 8 Bit. Wer's nicht glaubt, soll seinen Rechner aufschrauben und nachzählen.