Transcation log is full 6 Ιουνίου 2006
Posted by Nikolas in SQL.Tags: howto, SQL
trackback
Πρωί πρωί, μόλις έφτασα στο γραφείο, χτυπά το τηλέφωνο:
Πελάτης – Σβήνω, χάνομαι, πήγα να μπώ στο πρόγραμμα και μου έβγαλε ένα μύνημα «Transaction log is full»! Δεν μπορώ να μπω, δεν δουλεύει τίποτα, χάνομαι, σβήνω, τρέχα!
Εγώ – …
Τρέχω λοιπόν στο πελάτη και βρίσκω ένα Transcation Log το οποίο έχε απλώσει σε όλο το δίσκο… 74GB ήταν το αθεόφοβο σε 80άρη δίσκο.
– Βρε καλό μου, βρέ χρυσό μου, κάνε shrink
– Τσού (εκεί, κολλημένο στα 74GB)
– Βρε δεν πάς στην ευχή του Θεού και της Παναγίας, λέω εγώ;
Stop τον SQL Server, Delete το LDF, αντιγραφή του MDF σε άλλο σημείο στο σκληρό και με λίγα λόγια ότι κάνουμε στη περίπτωση που έχουμε SQL database marked as SUSPECT.
Μέγα Λάθος!!! Δεν μου έκατσε με τίποτα (αν και πρέπει να το ψάξω … αύριο τώρα, γιατί πήγε 1.00)
Τέλως πάντων με τα πολλά η λύση βρέθηκε και είναι η εξής:
1. Από Enterprise Manager -> Properties -> Options -> Recovery Model: Simple
2. Εκτελώ το παρακάτω script
USE dbName
GO
DBCC SHRINKFILE(dbName_log, 1)
BACKUP LOG dbName WITH TRUNCATE_ONLY
DBCC SHRINKFILE(dbName_log, 1)
GO
3. Από Enterprise Manager -> Properties -> Options -> Recovery Model: Full (ΜΕΓΑ λάθος! απορώ γιατί το έγραψα. Με Full Recovery Model, μετά από λίγο καιρό έχεις ένα LDF, μεγαλύτερο από όλη τη βάση του ΚΕΠΥΟ!!!)
4. ΕΤΟΙΜΟΣ!
Links που βρήκα χρήσιμα:
[…] Είχα γράψει κάποτε σχετικά με το τί μπορείς να κάνεις αν για κάποιο λόγο, π.χ. πολύ μεγάλο transaction log ή corrupted transaction log, η βάση εμφανίζεται ως “ύποπτη”. […]
[…] με το τί μπορείς να κάνεις αν για κάποιο λόγο, π.χ. πολύ μεγάλο transaction log ή corrupted transaction log, η βάση εμφανίζεται ως […]