it-swarm.com.de

SQL Server - Protokoll ist aufgrund von ACTIVE_TRANSACTION voll

Ich habe eine sehr große Datenbank (50+ GB). Um Speicherplatz auf meiner Festplatte freizugeben, habe ich versucht, alte Datensätze aus einer der Tabellen zu löschen. Ich habe den Befehl ausgeführt:

delete from Table1 where TheDate<'2004-01-01';

SQL Server 2012 sagte jedoch:

Msg 9002, Level 17, State 4, Line 1 
The transaction log for database 'MyDb' is full due to 'ACTIVE_TRANSACTION'.

und es hat nichts gelöscht. Was bedeutet diese Nachricht? Wie kann ich die Datensätze löschen?

20
oabarca

Hier ist, was ich getan habe, um den Fehler zu umgehen.

Zuerst habe ich das Datenbankwiederherstellungsmodell als EINFACH eingerichtet. Weitere Informationen hier .

Durch Löschen einiger alter Dateien konnte ich 5 GB freien Speicherplatz schaffen, wodurch die Protokolldatei mehr Speicherplatz zum Wachsen bekam.

Ich habe die DELETE-Anweisung ohne Vorwarnung erfolgreich wiederholt.

Ich dachte, dass durch Ausführen der DELETE-Anweisung die Datenbank sofort kleiner wird und somit Speicherplatz auf meiner Festplatte frei wird. Das stimmte aber nicht. Der nach einer DELETE-Anweisung freigegebene Speicherplatz wird nicht sofort an das Betriebssystem zurückgegeben, es sei denn, Sie führen den folgenden Befehl aus:

DBCC SHRINKDATABASE (MyDb, 0);
GO

Weitere Informationen zu diesem Befehl hier .

16
oabarca

Durch einen Neustart des SQL Servers wird der von Ihrer Datenbank verwendete Protokollbereich gelöscht. Wenn dies jedoch keine Option ist, können Sie Folgendes versuchen:

* Issue a CHECKPOINT command to free up log space in the log file.

* Check the available log space with DBCC SQLPERF('logspace'). If only a small 
  percentage of your log file is actually been used, you can try a DBCC SHRINKFILE 
  command. This can however possibly introduce corruption in your database. 

* If you have another drive with space available you can try to add a file there in 
  order to get enough space to attempt to resolve the issue.

Ich hoffe, dies hilft Ihnen bei der Suche nach Ihrer Lösung.

11
Ankit Bajpai