Jeg er ingen SQL-ekspert, og det blir jeg minnet på hver gang jeg må gjøre noe utover det grunnleggende. Jeg har en testdatabase som ikke er stor, men transaksjonsloggen er definitivt stor. Hvordan tømmer jeg transaksjonsloggen?
Her er en enkel og veldig uelegant & potensielt farlig måte.
Jeg antar at du ikke tar sikkerhetskopier av loggen. (Som avkorter loggen). Mitt råd er å endre gjenopprettingsmodell fra full til enkel. Dette vil forhindre oppblåsthet av loggen.
Hvis du ikke bruker transaksjonsloggene til gjenoppretting (dvs. at du bare tar fullstendige sikkerhetskopier), kan du sette Recovery Mode til "Simple", og transaksjonsloggen vil krympe i løpet av kort tid og aldri fylles opp igjen.
Hvis du bruker SQL 7 eller 2000, kan du aktivere "truncate log on checkpoint" i kategorien databasealternativer. Dette har samme effekt.
Dette anbefales selvsagt ikke i produksjonsmiljøer, siden det ikke er mulig å gjenopprette til et tidligere tidspunkt.
For å avkorte loggfilen: .
*For å krympe loggfilen: Sp_AttachDB [DBN]*.
Sikkerhetskopiere logg [DBName] med No_Log
Krymp databasen ved å enten:
Ved hjelp av Enterprise Manager: - Høyreklikk på databasen. Høyreklikk på databasen, Alle oppgaver, Krymp databasen, Filer, Velg loggfil, OK.
Bruke T-SQL :- Dbcc Shrinkfile ([Log_Logical_file]) Dbcc Shrinkfile ([Log_Logical_Name])*.
Du finner det logiske navnet på loggfilen ved å kjøre sp_helpdb eller ved å se i egenskapene til databasen i Enterprise Manager.