lupatz
Goto Top

MS-SQL Server 2000 - Transaktionsprotokoll voll (60GB!!!) - Platte voll - Kopf leer

Auf unserem DB-Server hat das Transaktionsprotokoll die Partitionsgröße erreicht. Die Platte ist also voll. Die Datenbank wird jetzt im Enterprise-Manager als "fehlerverdächtig" angezeigt. Nichts geht mehr.

Hallo erstmal!

Was ist nun die sinnvollste vorgehensweise für die Wiederherstellung einer funktionsfähigen DB?

Details:
Datenbankfile: 500MB
Transaktionsprotokoll: über 60 GB
Die Partition ist voll!
Die DB wird als "fehlerverdächtig" markiert. Die DB-Objekte werden nicht angezeigt.
Per Query-Analyzer komme ich nicht auf die DB, da sie "offline" ist (?)

Ich habe noch eine SQL-Srv 2000 mit 130GB freiem Platz laufen. Hierauf habe ich schon die beiden Dateien überspielt. Hat arschlange gedauert (60GB über 100MBit). Ich weiß nicht, ob (und wenn wie) ich die DB hier wieder konsistent kriege, und sie dann wieder auf den Live-Server bringen kann. Hab ich noch nie gemacht.

Bin Euch für jegliche Hilfe dankbar. Den ähnlichen Beitrag mit dem OSTER-GAU habe ich schon gelesen, aber ich bin in Sachen MS-SQL ziemlich jungfräulich, deshalb wäre ein "best practice" echt hilfreich.

Ich zähl auf Euch.....

Gruß
Lupatz

Content-Key: 17392

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

Printed on: April 19, 2024 at 01:04 o'clock

Member: r00t
r00t Oct 08, 2005 at 10:22:19 (UTC)
Goto Top
Kannst du das Transaktionfile nicht einfach löschen=??? hat ja mit der Datenbank nichts zutuen...
Member: lupatz
lupatz Oct 08, 2005 at 11:09:10 (UTC)
Goto Top
Sorry, das hab ich vergessen zu erwähnen.

Ich habe das Logfile schon gelöscht (Kopie liegt sicherheitshalber auf dem freien Server) und dann geschaut, ob die DB nach dem Neustart des SQL-Dienstes wieder hochkommt.
Fehlanzeige. Den Server selbst habe ich noch nicht neu gestartet.

Aber wieso soll das Transaktionsprotokoll nichts mit der DB zu tun haben??? Können da nicht noch Transaktionen drin stehen, die der SQL-Server mangels Plattenplatz nicht mehr in die DB schreiben konnte?
Member: lupatz
lupatz Oct 08, 2005 at 12:27:01 (UTC)
Goto Top
face-smile

verhaltene Freude:

Hab's glaub' ich hinbekommen.
Nachdem ich das Transaktionsprotokoll (TP) gestern verschoben hatte, lief die DB ja genauso wenig, wie vorher.
Weil das nichts genützt hat, habe ich es dann wieder an seinen alten Platz kopiert.
Also quasi einmal gelöscht und wieder neu in den Ordner kopiert.

Als ich vorhin den SQL-Dienst wieder gestartet habe, war die DB plötzlich nicht mehr als "fehlerverdächtig" markiert. Vielleicht war die Datei so fragmantiert, dass sie nach dem hin- und herkopieren weniger Platz auf dem Datenträger eingenommen hat und dadurch das Quäntchen Platz wieder da war, welches der SQL-Dienst zum Starten der Datenbanken brauchte.

Nachdem die DB wieder online war (Platte war natürlich wieder vollgerotzt) habe ich mit dem Query-Analyzer auch wieder zugreifen können, und habe folgendes Skript ausgeführt:

BACKUP LOG pubs WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE(pubs_log, 10)
GO

...wobei ich für pubs natürlich unseren DB-Namen verwendet habe.

Nach der Aktion ist das TP von knapp 64GB auf 10MB geschrumpft! Die Aktion hat keine Minute gedauert.
Zuvor hatte ich die DB per Enterprise-Manager gesichert. Eigentlich hatte ich erwartet, dass der Sicherungsjob das TP schon verkleinert - war aber nicht so.

Wie kann ich denn dauerhaft vermeiden, dass mir der Spass nochmal wiederfährt?


melde mich noch, ob's das jetzt auch wirklich war.
Member: meinereiner
meinereiner Oct 08, 2005 at 21:27:00 (UTC)
Goto Top
ich dnke mal dein Problem wird daran liegen, dass du die Transaktionsprotokolle nicht löscht. Wenn die Datenbank dann für den Wiederherstellungsmodus auf Vollständig steht, wird das Protokoll nie gesicht. Als entweder stellst du den Widerherstellungsmodus auf einfach (in den Eigenschaften der Datenbank), oder du sicherst das Transaktionsprotokoll mit.
Member: lupatz
lupatz Oct 28, 2005 at 10:48:45 (UTC)
Goto Top
Danke für den Tipp. Ich probiers mal aus.

MfG
Lupatz