{"id":233,"date":"2012-11-17T18:57:11","date_gmt":"2012-11-17T16:57:11","guid":{"rendered":"http:\/\/www.flip-design.de\/?p=233"},"modified":"2012-11-17T23:19:25","modified_gmt":"2012-11-17T21:19:25","slug":"markierte-transaktionen-auf-die-transaktion-genaues-zuruckrollen","status":"publish","type":"post","link":"https:\/\/www.flip-design.de\/?p=233","title":{"rendered":"Markierte Transaktionen &#8211; Auf die Transaktion genaues zur\u00fcckrollen!"},"content":{"rendered":"<p><a href=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2012\/11\/Transaction.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft  wp-image-234\" title=\"Transaction\" src=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2012\/11\/Transaction.png\" alt=\"\" width=\"236\" height=\"125\" \/><\/a>Bei gr\u00f6\u00dferen Transakionen bietet es sich an, zu wissen wann und welche Aktion die \u00c4nderung in der Datenbank verursacht hat, um bei einem Restore der Datenbank mit entsprechenden Transaktions-Protokoll Sicherungen auch wieder auf genau diesen Zeitpunkt zur\u00fccksichern zu k\u00f6nnen. Besser als sich die Zeit zu notieren, ist es beim Ausf\u00fchren einer Transaktion diese zu markieren. Daf\u00fcr erh\u00e4lt die Transaktion einen Namen und kann dann bei einem Restore mit einem Haltepunkt angesteuert werden.<\/p>\n<p>Hier das Beispiel:<\/p>\n<ol>\n<li>Zuerst brauchen wir wieder eine Datenbank mit Daten:<\/li>\n<\/ol>\n<pre escaped=\"true\" lang=\"tsql\">CREATE DATABASE markedtran\r\nGO\r\nUSE markedtran\r\nGO\r\nCREATE TABLE dbo.test (id int not null primary key, test varchar(255) null);\r\ngo\r\ninsert into test (id, test) values (1, 'a');\r\ninsert into test (id, test) values (2, 'b');\r\ninsert into test (id, test) values (3, 'c');\r\ninsert into test (id, test) values (4, 'd');\r\ninsert into test (id, test) values (5, 'e');\r\nGO<\/pre>\n<ul>\n<li>Danach sichern wir diese mit einer Vollsicherung, f\u00fcgen erneut einen Datensatz ein (damit eine \u00c4nderung erfolgt) und sichern danach diese \u00c4nderung mit einer Transaktionslog Sicherung:<\/li>\n<\/ul>\n<pre escaped=\"true\" lang=\"tsql\">BACKUP DATABASE [markedtran] TO\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH FORMAT, INIT,\u00a0 NAME = N'markedtran-Vollst\u00e4ndig Datenbank Sichern', SKIP, NOREWIND, NOUNLOAD,\u00a0 STATS = 10\r\nGO\r\nINSERT INTO dbo.Test (id, test) VALUES(6, 'f');\r\nGO\r\nBACKUP LOG [markedtran] TO\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH NOFORMAT, NOINIT,\u00a0 NAME = N'markedtran-Transaktionsprotokoll\u00a0 Sichern', SKIP, NOREWIND, NOUNLOAD,\u00a0 STATS = 10\r\nGO<\/pre>\n<ul>\n<li>Nun starten wir eine Transaktion, benennen diese, Aktualisieren entsprechene Datens\u00e4tze mit einem Update und best\u00e4tigen diese Transaktion:<\/li>\n<\/ul>\n<pre escaped=\"true\" lang=\"tsql\">BEGIN TRANSACTION HierBinIch\r\nWITH MARK 'Beginne die gro\u00dfe Aktualisierung';\r\nGO\r\nUPDATE dbo.test SET test = 'd' WHERE id &lt; 6\r\nGO\r\nCOMMIT TRANSACTION HierBinIch\r\nGO<\/pre>\n<ul>\n<li>Nun f\u00fcgen wir nochmals einen Datensatz ein (nur um zu sehen, das nach einem Restore mit der nachfolgenden Transaktionslogsicherung dieser Datensatz dann nicht verf\u00fcgbar ist, wenn nur bis zum markierten Punkt zur\u00fcckgesichert wurde:<\/li>\n<\/ul>\n<pre escaped=\"true\" lang=\"tsql\">insert into test (id, test) values (9, 'z');\r\nBACKUP LOG [markedtran] TO\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH NOFORMAT, NOINIT,\u00a0 NAME = N'markedtran-Transaktionsprotokoll\u00a0 Sichern', SKIP, NOREWIND, NOUNLOAD,\u00a0 STATS = 10\r\nGO<\/pre>\n<ul>\n<li>Nun sichern wir die Vollsicherung zur\u00fcck mit den beiden Transaktionslogsicherungen im Anschluss. Dabei wird dann der markierte Punkt als &#8222;Breakpoint&#8220; angegeben:<\/li>\n<\/ul>\n<pre escaped=\"true\" lang=\"tsql\">RESTORE DATABASE [markedtran] FROM\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH\u00a0 FILE = 1,\u00a0 NORECOVERY,\u00a0 NOUNLOAD,\u00a0 REPLACE,\u00a0 STATS = 10\r\nGO\r\nRESTORE LOG [markedtran] FROM\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH\u00a0 FILE = 2, NORECOVERY, NOUNLOAD,\u00a0 STATS = 10\r\nGO\r\nRESTORE LOG [markedtran] FROM\u00a0 DISK = N'C:\\temp\\markedtran.bak' WITH\u00a0 FILE = 3,\u00a0 NOUNLOAD,\u00a0 STATS = 10,\u00a0 STOPBEFOREMARK = N'HierBinIch'\r\nGO<\/pre>\n<p>Das war&#8217;s!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei gr\u00f6\u00dferen Transakionen bietet es sich an, zu wissen wann und welche Aktion die \u00c4nderung in der Datenbank verursacht hat, um bei einem Restore der Datenbank mit entsprechenden Transaktions-Protokoll Sicherungen auch wieder auf genau diesen Zeitpunkt zur\u00fccksichern zu k\u00f6nnen. Besser &hellip; <a href=\"https:\/\/www.flip-design.de\/?p=233\">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":[25,18,10,3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/233"}],"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=233"}],"version-history":[{"count":6,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/233\/revisions"}],"predecessor-version":[{"id":243,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/233\/revisions\/243"}],"wp:attachment":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}