Wenn eine Transaktion erfolgreich festgeschrieben wurde , kann ich dann zu 100% sicher sein, dass sie in die Datenbank UND in die Protokolldateien geschrieben wurde? Kann ich sicher sein, dass die Daten GESPEICHERT sind?
Heute hatten unsere Protokolldateien das Limit des Laufwerks erreicht und wir haben viele Fehler bekommen. Darüber hinaus stürzten einige andere Dienste ab. Wir haben die Festplatte vergrößert und den Server neu gestartet.
Während des Startvorgangs hat der Server eine "Datenbankwiederherstellung" durchgeführt. Kann ich sicher sein, dass alles wieder in Ordnung ist?
sql-server
sql-server-2008
sql-server-2008-r2
SQL-Polizei
quelle
quelle
Antworten:
Wenn eine Clientanwendung ein COMMIT ausgegeben und einen Erfolgscode zurückerhalten hat, garantiert die Engine, dass die Transaktion dauerhaft ist. Es ist garantiert, dass alle in einer Transaktion vorgenommenen Änderungen auch nach einem Absturz sichtbar sind. Darüber hinaus garantiert die Wiederherstellung, dass jede nicht festgeschriebene Transaktion im Falle eines Absturzes zurückgesetzt wird.
Für mehr Details empfehle ich die Lektüre des ARIES Papers.
Write-Ahead-Protokollierung und Wiederherstellung können keine Garantie übernehmen, wenn die zugrunde liegende Speicherhardware fehlerhaft ist (Beschädigung). Und jedes technische Produkt kann Defekte enthalten.
Ihre Anwendung muss wie alle anderen Anwendungen sorgfältig geschrieben werden, damit sie sich bei Abstürzen (Fehlern) korrekt verhält. Es gibt keine Magie.
quelle