Frage

Jeden Monat machen wir einen Monats -Snapshot unserer Produktionsdatenbank. Diese Monatsende -Schnappschüsse dienen streng zu Berichtszwecken, es gibt keine Einfügungen, Aktualisierungen oder Löschungen, die jemals durchgeführt wurden. Jeder dieser Schnappschüsse hat eine .MDF und .LDF Datei.

Ich möchte die löschen .LDF Dateien und freien Speicherplatz auf dem Server. Gibt es Gründe, warum ich das behalten muss .LDF Dateien?

Klärung:

Unsere Produktionsdatenbank wird jede Nacht von Dateiauszügen aus einem anderen System nachgebildet. Wir berichten nur über die Produktionsdatenbank ... werden nie Aktualisierungen durchgeführt.

Nachtprozess:
Nach dem, was ich sagen kann ...
Jede Nacht werden die Datenbanktabellen verkürzt
Die Tabellen werden durch eine Reihe von Bulk -Einfügungsanweisungen besiedelt
Indizes werden wieder aufgebaut

War es hilfreich?

Lösung 4

Hier ist die Lösung, mit der ich die LDF -Dateien verkleinert habe.

  1. Datenbank abnehmen
  2. Benennen Sie die LDF -Datei in *_old.ldf um
  3. Datenbank anhängen
  4. Entfernen Sie die Überweisung an den fehlenden LDF

Dadurch wird eine LDF -Datei mit einer Größe von 504.000 nachgebaut.

  1. Löschen *_old.ldf
  2. Papierkorb leeren

Dies hat eine erhebliche Menge an Speicherplatz auf dem Server zurückgefordert. Es funktioniert für uns, weil alle diese Datenbanken nur statische Berichtsdatenbanken sind. Mit diesen Datenbanken werden keine Einfügungen, Updates oder Löschungen durchgeführt.

Update 2019-09-24: Ja, ich bin damit einverstanden, dass das eine wirklich schlechte Idee ist. Ich hörte fast sofort auf. Ich habe alle Indizes mit einem Füllfaktor von 100 wieder aufgebaut. Nur die .LDF -Dateien. Und änderte alle Datenbanken, die nur gelesen werden sollen.

Andere Tipps

Sie sollten die Protokolldatei nicht löschen. Wenn Sie versuchen, eine Datendatei ohne das Protokoll wieder zu wiederholen, kann SQL Server sie technisch neu erstellen. Es gibt jedoch einige potenzielle Probleme, beispielsweise wenn es offene Transaktionen gibt, wenn die Datenbank abgelöst wurde. In diesem Fall haben Sie einen Gesamtdatenverlust.

Den Raum verbrauchen und Löschen Sie Ihre Protokolldateien nicht. Sie fragen um Probleme damit.

Sehen Dieser Artikel über Transaktionsprotokolle, insbesondere der "logarithmische Missmanagement" -Teil.

Wie in Eine andere Antwort, Sie können die Protokolldatei nicht löschen. Was Sie tun könnten, ist, die Datenbank auf READ_ONLY. Mit der Datenbank in READ_ONLY, Es sind keine Änderungen zulässig und die Protokolldatei wird nicht wachsen. Sie können die Größe der Protokolldatei auf eine minimale Größe reduzieren und Ihr Ziel eines minimalen Fußabdrucks erreichen. So setzen Sie die Datenbank in READ_ONLY Führen Sie den folgenden Befehl aus:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

Sie können die Datenbank wieder ändern READ_WRITE, Nehmen Sie alle erforderlichen Änderungen vor und setzen Sie es dann auf READ_ONLY Jedes Mal, wenn Sie müssen.

Die Protokolldatei ist weiterhin erforderlich, um die Säureeigenschaften der Datenbank aufrechtzuerhalten.

Tatsache ist, dass Sie eine Datenbank erstellen können, die nur mit der MDF -Datei verwendet wird. Es ist das sp_attach_single_file_db (Transact-SQL) Befehl. Beachten Sie, dass es in einer zukünftigen Version von Microsoft SQL Server entfernt wird. Es ist jedoch nicht klug, Ihre LDF -Dateien zu löschen. Hai hat recht 'Sie fragen nach Problemen damit.' Ein weiterer Standpunkt - sind Ihre LDF -Dateien riesig? Wenn dies der Fall ist, können Sie etwas gegen sie tun.

  1. Stellen Sie Ihre Datenbank auf Einfacher Wiederherstellungsmodell. Sie können dies nur tun, wenn Sie die Transaktionen nicht zurückrollen möchten
  2. Anstatt MDF- und LDF -Dateien zu erstellen, erstellen Sie eine vollständige Datenbanksicherungsdatei (.bak). Es wird kleiner sein TNAN MDF+LDF
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top