Si une transaction est validée avec succès, puis-je être sûr à 100% qu'elle a été écrite dans la base de données ET dans les fichiers journaux? Puis-je être sûr que les données sont enregistrées?
Aujourd'hui, nos fichiers journaux avaient atteint la limite du lecteur et nous avons eu beaucoup d'erreurs. De plus, certains autres services se sont écrasés. Nous avons augmenté le disque et redémarré le serveur.
Au démarrage, le serveur a fait une "récupération de base de données" - puis-je être sûr que tout va bien à nouveau?
sql-server
sql-server-2008
sql-server-2008-r2
Police SQL
la source
la source
Réponses:
Si une application cliente a émis un COMMIT et récupéré un code de réussite, la transaction est garantie par le moteur pour être durable. Il est garanti que toutes les modifications effectuées dans une transaction seront visibles, même après un crash. De plus, la récupération garantit également que toute transaction non engagée sera annulée en cas de plantage.
Pour plus de détails, je recommande de lire le document ARIES .
La journalisation et la récupération en écriture anticipée ne peuvent garantir que le matériel de stockage sous-jacent présente des défauts (corruption). Et tout produit d'ingénierie peut contenir des défauts.
Votre application, comme toutes les autres applications, doit être soigneusement écrite pour se comporter correctement en cas de plantage (erreurs). Il n'y a pas de magie.
la source