-
Bei der Verwendung von SQL Server treten häufig Situationen auf, in denen das Datenbankprotokoll sehr groß ist. Wenn dieses Problem auftritt, führen wir zwei Methoden zur Lösung ein.
Methode eins
Unter normalen Umständen kann das Verkleinern einer SQL-Datenbank die Datenbankgröße nicht wesentlich reduzieren. Die Hauptfunktion besteht darin, die Protokollgröße zu verkleinern. Dieser Vorgang sollte regelmäßig durchgeführt werden, um zu verhindern, dass das Datenbankprotokoll zu groß wird.
1. Stellen Sie den Datenbankmodus auf den einfachen Modus ein: Öffnen Sie SQL Enterprise Manager, klicken Sie im Stammverzeichnis der Konsole auf Microsoft SQL Server -> SQL Server-Gruppe -> Doppelklicken Sie, um Ihren Server zu öffnen -> Doppelklicken Sie, um die Datenbank zu öffnen Verzeichnis -> Wählen Sie Ihren Datenbanknamen aus (z. B. Forum-Datenbank Forum) -> Klicken Sie dann mit der rechten Maustaste und wählen Sie Eigenschaften -> Optionen auswählen -> Wählen Sie im Failover-Modus „Einfach“ aus und drücken Sie dann zum Speichern OK
2. Klicken Sie mit der rechten Maustaste auf die aktuelle Datenbank und zeigen Sie die verkleinerte Datenbank in allen Aufgaben an. Im Allgemeinen müssen die Standardeinstellungen nicht angepasst werden.
3. Nach dem Verkleinern der Datenbank wird empfohlen, die Datenbankeigenschaften auf den Standardmodus zurückzusetzen. Die Vorgehensweise ist dieselbe wie im ersten Punkt, da das Protokoll unter bestimmten ungewöhnlichen Umständen häufig eine wichtige Grundlage für die Wiederherstellung der Datenbank darstellt
NOCOUNT EINSTELLEN
DECLARE @LogicalFileName Systemname,
@MaxMinutes INT,
@NewSizeINT
USE-Tabellenname – der Name der Datenbank, die bearbeitet werden soll
SELECT @LogicalFileName = 'tablename_log', – Name der Protokolldatei
@MaxMinutes = 10, – Begrenzung der zulässigen Zeit zum Umbrechen des Protokolls.
@NewSize = 1 – Die Größe der Protokolldatei, die Sie festlegen möchten (M)
--Setup/Initialisierung
DECLARE @OriginalSize int
SELECT @OriginalSize = Größe
VON sysfiles
WHERE name = @LogicalFileName
SELECT 'Originalgröße von ' + db_name() + ' LOG ist ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K Seiten oder ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
VON sysfiles
WHERE name = @LogicalFileName
TABELLE DummyTrans ERSTELLEN
(DummyColumn char (8000) nicht null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wickeln Sie das Protokoll ggf. ein.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) – Zeit ist nicht abgelaufen
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
UND (@OriginalSize * 8 /1024) > @NewSize
BEGIN – Äußere Schleife.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN – Aktualisierung
INSERT DummyTrans VALUES ('Fill Log')
DummyTrans löschen
SELECT @Counter = @Counter + 1
ENDE
EXEC (@TruncLog)
ENDE
SELECT 'Endgültige Größe von ' + db_name() + ' LOG ist ' +
CONVERT(VARCHAR(30),size) + ' 8K Seiten oder ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
VON sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
NOCOUNT AUSSTELLEN