{"id":71,"date":"2006-07-31T20:46:06","date_gmt":"2006-07-31T18:46:06","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2006\/07\/31\/sql-talk\/db-defekte\/vorgehen-bei-datenbank-reparaturen-teil-2a"},"modified":"2006-07-31T20:46:06","modified_gmt":"2006-07-31T18:46:06","slug":"vorgehen-bei-datenbank-reparaturen-teil-2a","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2006\/07\/31\/sql-talk\/db-defekte\/vorgehen-bei-datenbank-reparaturen-teil-2a","title":{"rendered":"Vorgehen bei Datenbank-Reparaturen (Teil 2a)"},"content":{"rendered":"<p>Im <a href=\"http:\/\/www.glorf.it\/blog\/2006\/07\/24\/sql-talk\/db-defekte\/vorgehen-bei-datenbank-reparaturen-teil-1\">ersten Teil<\/a> der Reihe zum Vorgehen bei Datenbank-Reparaturen wurde erkl&#228;rt, wie man vorgehen kann, wenn man eine Datenbank an einen SQL Server 2000 anh&#228;ngen will, das aber nicht klappt, weil die Datenbank kaputt ist.<\/p>\n<p>In diesem Teil geht es darum, wie man vorgehen kann, wenn das Transaktionslog defekt ist oder es von jemandem gel&#246;scht wurde, der es f&#252;r eine &quot;ganz normale Log-Datei&quot; hielt, die man ruhig l&#246;schen kann. Diese Irrlehre h&#228;lt sich noch in einigen K&#246;pfen&#8230; \ud83d\ude09<\/p>\n<p>Wenn das Transaktionslog futsch oder defekt ist, muss man beachten das eine inkrementelle Sicherungsstrategie damit schwere R&#252;ckschl&#228;ge bekommt. Mann muss sofort nach der Reparatur eine Voll-Sicherung durchf&#252;hren. Wie man bei der Wiederherstellung vorgeht, h&#228;ngt vom Zustand der Datenbank ab. Wenn die Datenbank ordentlich geschlossen wurde und das Tranlog defekt ist, dann hat man sehr gute Chancen ohne Datenverluste aus der Geschichte rauszukommen. Wichtig ist immer, dass man vor dem Beginn der Analyse <strong>Kopien der Datenbank-Dateien<\/strong> anfertigt! Ich rate dazu den SQL Server zu stoppen und auch die Master-Dateien zu sichern.<\/p>\n<p>Beispiel aus der Praxis: Ein Mitarbeiter hat etwas zu viel gel&#246;scht. Jetzt wird der Admin gebeten die Sicherung vom Vortag wieder einzuspielen. Der Admin &#252;berschreibt die Dateien von heute mit der Sicherung von gestern (Festplattenvollsicherung bei gestopptem SQL Server, benutzt wird Simple Recovery Mode). Unerkl&#228;rlicherweise l&#228;sst sich die Datenbank danach nicht zugreifen. Analyse: Tranlog-Datei v&#246;llig geschrottet. Die Datenbank wurde als suspekt markiert, weil kein Recovery durchgef&#252;hrt werden konnte.<\/p>\n<p>In diesem Beispiel kann man vergleichsweise einfach zum Ziel kommen. Die Datenbank-Datei wurde ordnungsgem&#228;&#223; geschlossen. Daher enth&#228;lt das Tranlog keine Infos, die nicht schon in der Datenbank eingepflegt wurden. Man kann den SQL Server &quot;einfach&quot; ein Neues anlegen lassen: <\/p>\n<p>(1) SQL Server stoppen, LDF umbenennen (oder l&#246;schen, man hat ja eine Kopie), SQL Server starten.<\/p>\n<p>(2) Datenbank trennen und nur mittels der MDF wieder anh&#228;ngen:<\/p>\n<p><code>exec sp_detach_db 'MyCrashDB'<\/p>\n<p>exec sp_attach_single_file_db &#x0027;hahaha&#x0027;,<br \/>\n\t&#x0027;e:\\Programme\\Microsoft SQL Server\\MSSQL$MYLITTLESQL\\data\\MyCrashDB.MDF&#x0027;<\/code><\/p>\n<p>Man bekommt beim Anh&#228;ngen zwar einen Fehler, aber die Datenbank l&#228;sst sich prima wieder anh&#228;ngen.<\/p>\n<p><code>Device activation error. The physical file name 'e:\\Programme\\Microsoft SQL Server\\MSSQL$MYLITTLESQL\\data\\MyCrashDB_log.LDF' may be incorrect.<br \/>\nNew log file &#x0027;e:\\Programme\\Microsoft SQL Server\\MSSQL$MYLITTLESQL\\data\\MyCrashDB_log.LDF&#x0027; was created.<\/code><\/p>\n<p>Und fertig ist die Lauge. Herzlichen Gl&#252;ckwunsch. Man sollte danach in jedem Fall eine neue Datensicherung machen. Nicht nur, wenn man ein inkrementelles Backup verwendet.<\/p>\n<p>Im n&#228;chsten Teil geht es dann darum, was man macht, wenn die Datenbank nicht sauber heruntergefahren wurde.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil der Reihe zum Vorgehen bei Datenbank-Reparaturen wurde erkl&#228;rt, wie man vorgehen kann, wenn man eine Datenbank an einen SQL Server 2000 anh&#228;ngen will, das aber nicht klappt, weil die Datenbank kaputt ist. In diesem Teil geht es darum, wie man vorgehen kann, wenn das Transaktionslog defekt ist oder es von jemandem gel&#246;scht [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/71"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}