Oracle verfügt über SQL-Befehle, die ausgegeben werden können, damit eine Transaktion nicht protokolliert wird. Gibt es etwas Ähnliches für SQL Server 2008?
Mein Szenario: Wir benötigen Tx-Protokolle auf Servern (Dev, QA, Prod), aber vielleicht können wir auf Entwicklercomputern darauf verzichten.
sql-server
sql-server-2008
Raj Mehr
quelle
quelle
NOLOGGED
Option beziehen .Antworten:
Sie können unter keinen Umständen auf Transaktionsprotokolle in SQL Server verzichten. Der Motor funktioniert einfach nicht.
Sie können Ihr Wiederherstellungsmodell auf Ihren Entwicklungscomputern auf EINFACH einstellen. Dadurch wird verhindert, dass das Transaktionsprotokoll aufgebläht wird, wenn keine Transaktionsprotokollsicherungen durchgeführt werden.
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
quelle
SQL Server benötigt ein Transaktionsprotokoll, um zu funktionieren.
Es gibt jedoch zwei Betriebsarten für das Transaktionsprotokoll:
Im Vollbetrieb wächst das Transaktionsprotokoll , bis Sie die Datenbank sichern. Im einfachen Modus: Der Speicherplatz im Transaktionsprotokoll wird an jedem Prüfpunkt "recycelt" .
Nur sehr wenige Benutzer müssen ihre Datenbanken im vollständigen Wiederherstellungsmodell ausführen . Der einzige Punkt bei der Verwendung des vollständigen Modells besteht darin, dass Sie die Datenbank mehrmals pro Tag sichern möchten und das Sichern der gesamten Datenbank zu lange dauert. Sie sichern also nur das Transaktionsprotokoll.
Das Transaktionsprotokoll wächst den ganzen Tag und Sie sichern es einfach weiter. In dieser Nacht Sie tun , um Ihre vollständige Sicherung und SQL Server dann kürzt das Transaktionsprotokoll, beginnt den Raum in der Transaktionsprotokolldatei zugeordnet wiederzuverwenden.
Wenn Sie immer nur vollständige Datenbanksicherungen durchführen , möchten Sie nicht den vollständigen Wiederherstellungsmodus.
quelle
Es gibt einen dritten Wiederherstellungsmodus, der oben nicht erwähnt wurde. Der Wiederherstellungsmodus bestimmt letztendlich, wie groß die LDF-Dateien werden und wie oft sie geschrieben werden. In Fällen, in denen Sie Masseneinfügungen durchführen, sollten Sie die Datenbank auf "BULK / LOGGED" setzen. Dadurch bewegen sich Bulk-Einsätze schnell und können im laufenden Betrieb gewechselt werden.
Um dies zu tun,
USE master ; ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
So ändern Sie es zurück:
USE master ; ALTER DATABASE model SET RECOVERY FULL ;
Um das Gespräch darüber zu erweitern, warum jemand kein LDF möchte, füge ich Folgendes hinzu: Wir führen mehrdimensionale Modelle durch. Im Wesentlichen verwenden wir die Datenbank als großen Speicher von Variablen, die mit externen Programmen in großen Mengen verarbeitet werden. Wir benötigen NIEMALS Rollbacks. Wenn wir durch Ausschalten der ALL-Protokollierung eine Leistungssteigerung erzielen könnten, würden wir dies sofort tun.
quelle
Was ist Ihr Problem mit Tx-Protokollen? Sie wachsen? Setzen Sie dann einfach die Option auf Checkpoint abschneiden.
Aus der Microsoft-Dokumentation:
quelle
Wenn dies nur für Entwicklungsmaschinen gilt, um Platz zu sparen, wählen Sie einfach den einfachen Wiederherstellungsmodus, und Sie werden es gut machen.
Auf Produktionsmaschinen würde ich jedoch dringend empfehlen, die Datenbanken im vollständigen Wiederherstellungsmodus zu belassen. Dadurch wird sichergestellt, dass Sie bei Bedarf eine Wiederherstellung zu einem bestimmten Zeitpunkt durchführen können.
Wenn Sie Datenbanken im vollständigen Wiederherstellungsmodus haben, können Sie versehentliche Aktualisierungen und Löschungen durch Lesen des Transaktionsprotokolls rückgängig machen. Siehe unten oder weitere Details.
Wie kann ich eine UPDATE-Abfrage in SQL Server 2005 zurücksetzen?
Lesen Sie die Protokolldatei (* .LDF) in SQL Server 2008
Wenn Speicherplatz auf Produktionsmaschinen ein Problem darstellt, erstellen Sie einfach häufige Transaktionsprotokollsicherungen.
quelle