sqlschool.gr logo

articles

Articles of SQLschool.gr Team

Rebuild / Recreate Transaction log

Antonios Chatzipavlis
Friday 03 August 2018

Θα ξεκινήσω τα άρθρο μου αυτό τονίζοντας ότι όλα όσα θα αναφερθούν παρακάτω αφορούν εξαιρετικά δύσκολες περιπτώσεις και αποτελούν την τελευταία σανίδα σωτηρίας. Επίσης καλό είναι να έχει γίνει και μια σχετική "προπόνηση" σε περιβάλλον δοκιμών ώστε να είστε σίγουροι για το τι ακριβώς κάνετε και να μην σας λούζει κρύος ιδρώτας.


Ολική καταστροφή ή απώλεια του transaction log.

Είναι η περίπτωση που για Χ λόγους έχουμε χάσει παντελώς το transaction log σε μια database και αυτή εμφανίζεται σαν recovery pending και είτε δεν έχουμε backup γιατί αυτό είναι χαλασμένο, είτε ο χρόνος για να γίνει το restore είναι αρκετά μεγάλος για ένα σύστημα παραγωγής που πρέπει να δουλέψει σχετικά άμεσα.

Σε αυτή την περίπτωση μπορούμε να δημιουργήσουμε ξανά το transaction log με το παρακάτω statement


ALTER DATABASE tsqldemo REBUILD LOG ON (name='tsqlDemo_Log', FILENAME='E:\MSSQL14.DB01.LOG\tsqldemo.ldf', size = 1024MB);
GO

Αυτό μετά από την εκτέλεση του θα μας δώσει ένα Warning που σημαίνει πρέπει να κάνουμε αυτά που λέει άμεσα σαν επόμενο βήμα και τα οποία είναι DBCC CHECKDB , να πάρουμε full backup , να γυρίσουμε αυτή σε multi user mode (ALTER DATABASE tsqldemo SET MULTI_USER;)


Συμμάζεμα του αριθμού των VLFs που έχει το transaction log.

Έχω αναφερθεί αρκετές φορές σε αυτό και με μια απλή αναζήτηση στο SQLschool.gr με τη λέξη VLF θα βρείτε αρκετά για αυτό.

Η δόκιμη λύση είναι να γίνουν τα απαραίτητα transaction log backups και με shrink μόνο το log file να έρθουμε στην κατάσταση που επιθυμούμε.

Αν παρόλα αυτά ο αριθμός των VLFs είναι τέτοιος που θα χρειαστούν πάρα πολλά log backups και εφόσον έχουμε πάντα στην διάθεση μας ενημερωμένο full backup και εφόσον έχουν την δυνατότητα για downtime τότε μπορούμε να κάνουμε τα παρακάτω βήματα εκτελώντας ένα κάθε φορά.


DBCC LOGINFO (tsqldemo);
GO

-- STEP 1
ALTER DATABASE tsqldemo SET EMERGENCY;
GO

-- STEP 2
ALTER DATABASE tsqldemo SET SINGLE_USER;
GO

-- STEP 3
ALTER DATABASE tsqldemo SET OFFLINE;
GO

-- STEP 4
/*
LOCATE TLOG FILE USING WINDOWS EXPLORER AND DELETE IT
*/

-- STEP 5
ALTER DATABASE tsqldemo SET ONLINE;
GO

-- STEP 6
ALTER DATABASE tsqldemo REBUILD LOG ON (name='tsqlDemo_Log', FILENAME='E:\MSSQL14.DB01.LOG\tsqldemo.ldf', size = 1024MB) 
GO

-- STEP 7
ALTER DATABASE tsqldemo SET MULTI_USER;
GO

-- STEP 8
DBCC CHECKDB(tsqldemo)
GO

-- STEP 9
-- TAKE FULL BACKUP


//antonch


Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Episode

Transparent Data Encryption (TDE)

image

More Episodes...

Tip

Refresh Intellisence in SSMS

Για να κάνουμε refresh το intellisence μέσα στο SSMS αρκεί να πατήσουμε Ctrl+Shift+R

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2023 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.