Wie kann ich das Transaktionsprotokoll auf MS SQL 2000-Datenbanken schrumpfen?
-
03-07-2019 - |
Frage
Ich habe mehrere Datenbanken, in denen das Transaktionsprotokoll (LDF) ein Vielfaches größer als die Datenbankdatei (.mdf) ist.
Was kann ich tun, um diese automatisch zu schrumpfen oder sie davon abhalten, immer so groß?
Lösung
Das sollte den Job
use master
go
dump transaction <YourDBName> with no_log
go
use <YourDBName>
go
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs
go
-- then you can call to check that all went fine
dbcc checkdb(<YourDBName>)
Ein Wort der Warnung
Sie würde es nur wirklich verwenden, um auf einer Test / Entwicklungsdatenbank, wo man nicht eine richtige Backup-Strategie braucht, wie das Protokoll Dumping zu verlieren Transaktionen Geschichte führen wird. In Live-Systemen sollten Sie Lösung von Cade Roux
Andere Tipps
Backup Transaktionsprotokoll und schrumpfen sie.
Wenn die DB regelmäßig gesichert wird und am Checkpoint abgeschnitten, sollte es nicht außer Kontrolle geraten, aber wenn Sie eine große Anzahl (Größe) der Transaktionen zwischen diesen Abständen zu tun, wird es bis zum nächsten Kontrollpunkt wachsen .
Rechtsklick auf die Datenbank in Enterprise Manager> Alle Tasks> Shrink-Datenbank.
DBCC SHRINKFILE.
Niemand hier sagte, es, so werde ich: NIEMALS das Transaktionsprotokoll schrumpfen. Es ist eine schlechte Idee, von der SQL Server-Sicht.
Halten Sie das Transaktionsprotokoll klein täglich db Backups tun und stündlich (oder weniger) Transaktionsprotokollsicherungen. Das Transaktionsprotokoll Sicherungsintervall hängt davon ab, wie ausgelastet db ist.
Eine andere Sache, die Sie versuchen können, ist die Wiederherstellungsmodus einfach zu setzen für die Datenbank (falls sie es nicht schon sind), die die Protokolldateien wachsen so schnell halten. Wir hatten dieses Problem vor kurzem, wo unser Transaktionsprotokoll gefüllt und wir waren nicht mehr Transaktionen erlaubt.
Eine Kombination der Schrumpf-Datei, die in mehreren Antworten und einfachen Wiederherstellungsmodus sorgten dafür, dass unsere Protokolldatei eine angemessene Größe geblieben ist.
Mit Query Analyzer:
USE yourdabatase
SELECT * FROM sysfiles
Sie sollten etwas Ähnliches finden:
FileID …
1 1 24264 -1 1280 1048578 0 yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF
2 0 128 -1 1280 66 0 yourdabatase_Log D:\MSSQL_Services\Data\yourdabatase_Log.LDF
Überprüfen Sie die Datei-ID der Protokolldatei (seine 2 die meiste Zeit). Führen Sie 2 oder 3 mal den Befehl checkpoint jede Seite auf die Festplatte zu schreiben.
Checkpoint
GO
Checkpoint
GO
Führen Sie den folgenden Befehl Transaktions die Protokolldatei 1 MB mit dem Stamm
DUMP TRAN yourdabatase WITH no_log
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/
Hier ist, was ich habe mit
BACKUP LOG <CatalogName> with TRUNCATE_ONLY
DBCC SHRINKDATABASE (<CatalogName>, 1)
use <CatalogName>
go
DBCC SHRINKFILE(<CatalogName_logName>,1)
versuchen sp_force_shrink_log, die Sie hier finden können http://www.rectanglered.com/sqlserver.php