{"id":122,"date":"2011-06-25T15:24:31","date_gmt":"2011-06-25T13:24:31","guid":{"rendered":"http:\/\/www.flip-design.de\/?p=122"},"modified":"2011-06-26T21:33:37","modified_gmt":"2011-06-26T19:33:37","slug":"datenbank-snapshots","status":"publish","type":"post","link":"https:\/\/www.flip-design.de\/?p=122","title":{"rendered":"Datenbank Snapshots"},"content":{"rendered":"<p><a href=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2011\/06\/snapshot.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-full wp-image-147\" title=\"snapshot\" src=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2011\/06\/snapshot.png\" alt=\"\" width=\"144\" height=\"74\" \/><\/a>Ab Microsoft SQL Server 2005 ist es m\u00f6glich Datenbank Snapshots zu erstellen (ab der Enterprise Edition). Durch diese Technologie wird ein Abbild der Quell-Datenbank in eine Datendatei (je nach Menge der enthaltenen Datendateien) geschrieben, womit es m\u00f6glich ist, die Datenbank abzufragen ohne das Laufende \u00c4nderungen aus der eigentlichen Datenbank in das Ergebnis aus dem Snapshpt einflie\u00dfen. Der Datenbank Snapshot ist schreibgesch\u00fctzt (verf\u00fcgt \u00fcber kein Transaktionsprotokoll) und es k\u00f6nnen keine Daten- oder Strukturellen \u00c4nderungen am Snapshot vorgenommen werden, lediglich Lesende Anweisungen sind zugelassen und es k\u00f6nnen auch keine Benutzer oder Rollen hinzugef\u00fcgt werden.<\/p>\n<p>Zur Praxis: Ein Datenbank Snapshot wird folgenderma\u00dfen erzeugt:<br \/>\n<code>CREATE DATABASE DBSNAPSHOT ON (name=LOGISCHER_DATEINAME, filename='PHSISCHER_PFAD_UND_DATEINAME') AS SNAPSHOT OF DATENBANK<\/code><br \/>\nDurch diesen Befehl wird erstmal ein Container erzeugt in dem keine Datenseiten enthalten sind. Sobald eine Datenseite in der Quell-Datenbank ver\u00e4ndert wird, wird diese in den Snapshot r\u00fcberkopiert. Das bedeutet, das Abfragen auf den Snapshot auf unver\u00e4nderte Daten in der Produktiven Datenbanken in die eigentliche Datenbank umgeleitet werden. Sobald Daten ver\u00e4ndert worden sind, werden diese Datenseiten aus dem Snapshot gelesen.<br \/>\nStrukturelle \u00c4nderungen (DDL) die auf der Produktiven Datenbank vorgenommen werden, werden nicht in den Snapshot \u00fcbernommen, sondern sind lediglich in der eigentlichen Datenbank enthalten, da diese nicht zum Zeitpunkt des Snapshots existierten.<\/p>\n<p>Besteht eine Datenbank aus meheren Datendateien, m\u00fcssen diese ebenfalls mit angegeben werden. Es k\u00f6nnen keine Dateien oder Dateigruppen ausgelassen werden.<\/p>\n<p>M\u00f6chte man eine Datenbank wiederherstellen, muss zuerst der Datenbank Snapshot entfernt werden, da ansonsten keine R\u00fccksicherung m\u00f6glich ist. Das begr\u00fcndet sich durch die Verlinkung der Seiten, da der Snapshot auf die unver\u00e4nderten Datenseiten der Produktiven Datenbank zur\u00fcckgreift und der Snapshot sonst inkonsistent w\u00e4re. Ein Snapshot wird durch ein einfaches DROP DATABASE entfernt.<\/p>\n<p>Weiter kann man auch aus einem Datenbank Snapshot Daten\u00e4nderungen zur\u00fccknehmen, indem man die Datenbank aus dem Snapshot wiederherstellt:<br \/>\n<code>RESTORE DATABASE DATENBANK FROM DATABASE_SNAPSHOT = 'DBSNAPSHOT'<\/code><br \/>\nDadurch werden alle im Snapshot enthaltenen Datenseiten in die eigentliche Datenbank zur\u00fcckgeschrieben, bzw. \u00fcberschrieben.<\/p>\n<p>Wichtig: Wenn man dies auf einer Datenbank macht, die mit einer Transaktionsprotokollsicherung gesichert wird, muss danach eine Vollsicherung durchgef\u00fchrt werden, da ab diesem Zeitpunkt keine konsistente Vollsicherung mehr vorliegt.<\/p>\n<p>F\u00fcr das Verwalten\/Erstellen\/L\u00f6schen von Snapshots ben\u00f6tigt man die Server-Sicherheitsrolle &#8222;dbcreator&#8220;.<\/p>\n<p>Fazit:<br \/>\nSnapshots eigenen sich hervorragend f\u00fcr Auswertungszwecke von Daten aus einem Live System, sofern hier nicht das Motto gilt: &#8222;Traue keiner Statistik, die Du nicht selbst gef\u00e4lscht hast&#8220;. :-)<br \/>\nAnsonsten eignet sich dies auch als &#8222;kleines Backup&#8220; vor einer gr\u00f6\u00dferen Daten\u00e4nderung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ab Microsoft SQL Server 2005 ist es m\u00f6glich Datenbank Snapshots zu erstellen (ab der Enterprise Edition). Durch diese Technologie wird ein Abbild der Quell-Datenbank in eine Datendatei (je nach Menge der enthaltenen Datendateien) geschrieben, womit es m\u00f6glich ist, die Datenbank &hellip; <a href=\"https:\/\/www.flip-design.de\/?p=122\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[18,3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/122"}],"collection":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":8,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":125,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions\/125"}],"wp:attachment":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}