{"id":54,"date":"2006-07-18T17:57:27","date_gmt":"2006-07-18T15:57:27","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2006\/07\/18\/sql-talk\/db-defekte\/ursachen-fur-datenbank-defekte-teil-4\/"},"modified":"2006-07-18T21:26:48","modified_gmt":"2006-07-18T19:26:48","slug":"ursachen-fur-datenbank-defekte-teil-4","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2006\/07\/18\/sql-talk\/db-defekte\/ursachen-fur-datenbank-defekte-teil-4","title":{"rendered":"Ursachen f&#252;r Datenbank-Defekte (Teil 4)"},"content":{"rendered":"<p>In diesem Teil der Serie &#252;ber die Ursachen von Datenbank-Defekten geht es um Anwendungen, die sich zwischen den SQL-Server und den Festplatten einklinken. Systemnahen Programmen ist es m&#246;glich alle Dateizugriffe abzufangen und eigene Routinen dazwischen zu h&#228;ngen. Von diesen Programmen geht im Zusammenhang mit Datenbanksystemen eine reale, aber sehr schwer nachzuweisende Gefahr aus.<\/p>\n<p>Ein gutes Beispiel daf&#252;r sind eingeschaltete <strong>On-Access-Virenscanner<\/strong>. Sie &#252;berpr&#252;fen die Dateien w&#228;hrend des Zugriffs auf Sch&#228;dlingscode. Datenbank-Dateien des SQL-Servers auf Viren zu pr&#252;fen ist aber hochgradig unsinnig. Selbst wenn man einen Virus als BLOB (vom Typ Image) in die Datenbank schreiben w&#252;rde, h&#228;tten die Virenscanner so gut wie keine Chance den Inhalt der Datenbank zu pr&#252;fen, da der SQL-Server die Inhalte seitenweise in 8KB-Bl&#246;cke zerst&#252;ckelt und dann getrennt voneinander speichert. Sie k&#246;nnten allenfalls erkennen, wenn die Datei an sich &quot;befallen&quot; w&#228;re. In diesem Fall w&#252;rde aber der SQL-Server die Datenbank nicht &#246;ffnen k&#246;nnen und als suspekt markieren.<\/p>\n<p>Daher rate ich dringend die Datenbak-Dateien (Endungen: MDF, LDF und NDF) von der OnAccess-Virenpr&#252;fung auszuschlie&#223;en. Das kostet nicht nur etwas Performance, sondern kann auch zu Datenbank-Defekten f&#252;hren. In dem bereits neulich erw&#228;hnten Artikel von Microsoft &quot;<a href=\"http:\/\/www.microsoft.com\/technet\/prodtechnol\/sql\/2000\/maintain\/sqlIObasics.mspx\" target=\"_Blank\">SQL Server 2000 I\/O Basics<\/a>&quot; wird das deutlich beschrieben.<\/p>\n<blockquote><p>Many implementations of backup software, antivirus programs, and other applications are deployed as I\/O system filter drivers. This allows interception of the I\/O request and appropriate processing. Inappropriate processing by a filter driver may cause stale reads or lost writes.<\/p>\n<p>Often these types of problems require reproductions and kernel-level debugging efforts to determine the root cause of the problem, which might be something like a stuck IRP. This can be time-consuming and invasive.<\/p><\/blockquote>\n<p>Auf die angesprochenen Probleme &quot;stale reads&quot; und &quot;lost writes&quot; wird in dem Artikel sehr genau eingegangen. Sie sind auch verantwortlich f&#252;r potentielle Probleme mit anderer Software:<\/p>\n<p><strong>Software zur Verschl&#252;sselung<\/strong> von Dateien bzw. Verzeichnissen oder eine komplete Festplattenvollverschl&#252;sselung k&#246;nnen potentiell zu Datenbank-Defekten f&#252;hren. Mit dem windows-eigenen <abbr title=\"Encrypted File System\">EFS<\/abbr> sind mir noch keine Probleme zu Ohren gekommen. Bei anderer Verschl&#252;sselungssoftware konnte ein Kollege von mir mit dem Werkzeug <a href=\"http:\/\/support.microsoft.com\/?scid=kb%3Ben-us%3B231619\" taget=\"_blank\">SQLIOStress<\/a> sehr gut potentielle Probleme nachweisen. Um &#196;rger zu vermeiden, m&#246;chte ich hier keine Namen nennen. (Generell sollte man sowieso nicht alles glauben, was im Internet steht.) Wenn Ihr solche Software einsetzt, dann &#252;berpr&#252;ft einfach selber mit <a href=\"http:\/\/support.microsoft.com\/?scid=kb%3Ben-us%3B231619\" taget=\"_blank\">SQLIOStress<\/a>, ob es unproblematisch ist&#8230; \ud83d\ude09<\/p>\n<div class=\"anmerkung\"><strong>Update:<\/strong> Gerade fiel mir ein, dass bei Einsatz von EFS nur die MDF und NDFs verschl&#252;sselt werden d&#252;rfen. Microsoft empfiehlt die LDF nicht zu verschl&#252;sseln. Ich glaube vor allem aus Performancegr&#252;nden. Ich kann die Quelle aber gerade nicht finden, lediglich <a href=\"http:\/\/www.microsoft.com\/germany\/msdn\/library\/security\/ErhoehenDerSicherheitVonWebanwendungen\/secmod105.mspx\" target=\"_blank\">hier<\/a> steht ein winziger Satz dazu. <\/div>\n<p>Im Prinzip kommen alle m&#246;glichen weiteren Programme als St&#246;renfriede in Frage, die sich in das I\/O-System einh&#228;ngen. Mir f&#228;llt blo&#223; gerade kein weiteres Beispiel ein. \ud83d\ude09<\/p>\n<p>Vorherige Postings zu Ursachen von Datenbank-Defekten:<\/p>\n<ul>\n<li>skurrilen Gr&#252;nde im <a href=\"http:\/\/www.glorf.it\/blog\/2006\/07\/12\/sql-talk\/db-defekte\/ursachen-fur-datenbank-defekte-teil-1\/\">ersten Teil<\/a><\/li>\n<li>Probleme mit Festplatten im <a href=\"http:\/\/www.glorf.it\/blog\/2006\/07\/13\/sql-talk\/db-defekte\/ursachen-fur-datenbank-defekte-teil-2\/\">zweiten Teil<\/a><\/li>\n<li>Datenverluste durch eine defekte Datensicherung im <a href=\"http:\/\/www.glorf.it\/blog\/2006\/07\/15\/sql-talk\/db-defekte\/ursachen-fur-datenbank-defekte-teil-3\/\">dritten Teil<\/a><\/li>\n<\/ul>\n<p>Demn&#228;chst mehr an der gleichen Stelle&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Teil der Serie &#252;ber die Ursachen von Datenbank-Defekten geht es um Anwendungen, die sich zwischen den SQL-Server und den Festplatten einklinken. Systemnahen Programmen ist es m&#246;glich alle Dateizugriffe abzufangen und eigene Routinen dazwischen zu h&#228;ngen. Von diesen Programmen geht im Zusammenhang mit Datenbanksystemen eine reale, aber sehr schwer nachzuweisende Gefahr aus. Ein gutes [&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\/54"}],"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=54"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}