Benutzer mit den meisten Antworten
Vergleich zweier Datenbanken

Frage
-
Hallo,
ich brauche ein Vorschlag, wie ich Inhalte zweiter Datenbank\Tabellen vergleichen kann und bestätigen kann, dass Sie vom Inhalt her gleich sind. Folgende Umgebung ist gegeben. Ein Datenbank Server SQL 2008 Entersp. R2 dieser ist gespiegelt durch eine Software namens "Double Take". Die Server sind bis auf die IP-Adressen 100 % identisch. Der geplanter Disaster Fall läuft folgendermaßen ab. Ich hole mir die aktuellen Werte vom prod DB mit einem Script und fahren den prod DB Server runter (geplanter Disaster). Jetzt wird das Back-up-System hochgefahren und ich habe die gleiche Umgebung. Ich habe versucht die Inhalte mit CHECKSUM_AGG zu vergleichen aber leider funktioniert das bei Feldtypen wie ntext, images usw. nicht. Hat jemand eine andere Idee, wie ich beweisen kann, dass der Inhalt der beiden Datenbanken identisch ist.
Antworten
-
Hallo,
schon das "ordentliche runterfahren" wäre für eine Fehlersimulation zu "milde".
Dort müsste man einen Stromausfall oder größeren Hardware-Defekt (Mainboard durchgeschmort) simulieren;
was man am einfachsten durch Stecker ziehen "erledigt".Beim Database Mirroring wiederum muss man sich nicht ums Hochfahren kümmern,
das funktioniert bei entsprechender Konfiguration automatisch, mehr siehe Link oben.Nur durch einen harten Absturz bekommst Du "abgebrochene Transaktionen", wodurch u. a. sauberes Rollback getestet wird.
Denn je nachdem wie gut die nutzenden Applikationen geschrieben sind, kann es Probleme geben,
wenn "halbe Datenstände" nach einem Abbruch vorhanden bzw. hergestellt werden -
und externe Software wie Double Take könnte das u. U. verursachen.Im ungünstigen Fall könnte dabei heraus kommen, dass Anwendungen angepasst/verbessert werden müssen.
Wenn Du weitere Infos brauchst, schau Dich mal im Blog von Paul Randall um,
ein Artikel zum Einstieg:http://sqlskills.com/blogs/paul/post/Important-things-for-DBAs-to-consider.aspx
Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
-
Hi,
ist das eine einmalige Sache? Falls Du das öfter brauchst, würde ich dir ein Tool wie bspw. Red Gate SQL Data Compare empfehlen.
(Für eine einmalige Sache würd ichs auch empfehlen, dann halt ohne den anschließenden Kauf, wobei das Tool wirklich sein Geld wert ist :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:13
-
Hallo,
die Antwort, die Dir Jerry in der (deier) gleichen Frage auf SQL Server Central gegeben hat, deckt schon das meiste ab.
Und mit via CHECKSUM_AGG etc. kommst Du nun definitiv nicht zum Ziel, so dass die Investition in eine Software zu empfehlen ist.
Für eine einmalige Geschichte (was es aber nicht wirklich sein sollte), käme noch das Hilfsprogramm tablediff in Frage.Wenn ihr nicht spezielle Gründe für Double Take habt: Mit dem eingebauten (und somit kostenfreien) Database Mirroring
erreicht man im wesentlichen das Gleiche, ohne weitere Software (und damit einer weiteren Fehlerquelle).Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
-
Hallo,
auch für ein SELECT... muss die Datenbank online sein - allgemeiner:
ohne eine laufende SQL Server Instanz kannst Du eine Datenbank nicht prüfen.In Frage stellen sollte man generell, ob man eine Software (hier Double Take) prüfen muss.
Wenn man dort offene Fragen hat oder Probleme vermutet, so wäre eine Software für den HA Einsatz
nicht tauglich und gehört gar nicht erst eingesetzt. (Ich kenne die Software nicht und will damit kein Urteil fällen!)
Testen sollte man vielmehr, ob der eigene Notfallplan etwas taugt und die "worst case" Fälle abdeckt.
Dazu muss man aber die Datenbanken nicht Bit für Bit überprüfen - was bei größeren Systemen schon aus Zeitgründen nicht möglich ist.Ein mögliches Vorgehen:
Erstelle Testfälle, die konkrete Veränderungen an definierter Stelle vornehmen - vorzugsweise an kritischen Tabellen.
Und überprüfe diese, nachdem Du den Stecker rausgezogen und später wieder reingesteckt hast.Zum Erstellen wäre es günstiger, nicht das Produktivsystem zu verwenden, sondern ein kleineres Testsystem aufzusetzen.
Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
Alle Antworten
-
Hi,
ist das eine einmalige Sache? Falls Du das öfter brauchst, würde ich dir ein Tool wie bspw. Red Gate SQL Data Compare empfehlen.
(Für eine einmalige Sache würd ichs auch empfehlen, dann halt ohne den anschließenden Kauf, wobei das Tool wirklich sein Geld wert ist :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:13
-
Hallo,
die Antwort, die Dir Jerry in der (deier) gleichen Frage auf SQL Server Central gegeben hat, deckt schon das meiste ab.
Und mit via CHECKSUM_AGG etc. kommst Du nun definitiv nicht zum Ziel, so dass die Investition in eine Software zu empfehlen ist.
Für eine einmalige Geschichte (was es aber nicht wirklich sein sollte), käme noch das Hilfsprogramm tablediff in Frage.Wenn ihr nicht spezielle Gründe für Double Take habt: Mit dem eingebauten (und somit kostenfreien) Database Mirroring
erreicht man im wesentlichen das Gleiche, ohne weitere Software (und damit einer weiteren Fehlerquelle).Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
-
Hi,
ich kann keine Software nutzen, der den Vergleich zwischen zwei online Datenbanken erstellt. Da ja zum Zeitpunkt des K-Falls der eine Server absichtlich runtergefahren wird. Damit soll simuliert werden, das Double Take korrekt synct. Die einzige Möglichkeit ist ein Script zu erstellen, der die Werte aus vordefinierten Haupttabellen in der Datenbank vor dem offline schalten liest und diese dann mit der Back-up DB vergleich. Und da habe ich keine Ahnung, wie ich das machen soll. Deshalb die Frage hier, ob jemand eine Idee dazu hat.
Danke für die Mühe im Vorraus.
-
Hallo Zero1de,
ich weiß ja nicht, wie "Double-Take" bei Euch eingesetzt wird - sofern es ausschließlich um SQL Server geht, schmeißt Ihr sinnlos Geld zum Fenster raus. Wie Elmar bereits ausgeführt hat, währe für Euch das Database-Mirroring (ihr setzt ja SQL 2008 R2 Enterprise ein) auf jeden Fall ein besseres Model.
http://msdn.microsoft.com/en-us/library/ms189852(v=sql.105).aspx
Ist schon immer wieder seltsam, wie Geld zum Fenster rausgeworfen wird. Und nachher müssen alle sparen :)
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de -
Hallo,
auch für ein SELECT... muss die Datenbank online sein - allgemeiner:
ohne eine laufende SQL Server Instanz kannst Du eine Datenbank nicht prüfen.In Frage stellen sollte man generell, ob man eine Software (hier Double Take) prüfen muss.
Wenn man dort offene Fragen hat oder Probleme vermutet, so wäre eine Software für den HA Einsatz
nicht tauglich und gehört gar nicht erst eingesetzt. (Ich kenne die Software nicht und will damit kein Urteil fällen!)
Testen sollte man vielmehr, ob der eigene Notfallplan etwas taugt und die "worst case" Fälle abdeckt.
Dazu muss man aber die Datenbanken nicht Bit für Bit überprüfen - was bei größeren Systemen schon aus Zeitgründen nicht möglich ist.Ein mögliches Vorgehen:
Erstelle Testfälle, die konkrete Veränderungen an definierter Stelle vornehmen - vorzugsweise an kritischen Tabellen.
Und überprüfe diese, nachdem Du den Stecker rausgezogen und später wieder reingesteckt hast.Zum Erstellen wäre es günstiger, nicht das Produktivsystem zu verwenden, sondern ein kleineres Testsystem aufzusetzen.
Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
-
-
Hallo Zero1de (im Gegensatz zu Dir verwende ich meinen Realnamen!)
wenn Du mal genau liest, dann habe ich Dir ja einen Vorschlag unterbreitet! Nimm - wie von Elmar vorgeschlagen - Mirroring.
Desweiteren habe ich meine Aussage relativiert, indem ich darauf abgestellt habe, dass es "sinnlos" ist, wenn es ausschließlich um SQL Server geht.Und diese Aussage ist m. E. auch richtig; es ist mir auch herzlich egal, ob und wieviel Geld von Euch "zum Fenster rausgeschmissen wird".
Du hast eine Frage und die hat Elmar (ich habe seinen Vorschlag lediglich untermauert!) ja bereits gegeben.
Eine andere Lösung gibt es (mit SQL 2008) nicht!Nimm' SQL 2012 Enterprise und verwende AlwaysOn!
"Dumm daherschwätzen" definiere ich anders.
Desweiteren solltest Du dich mit den Nettiquetten eines Forums vertraut machen.
Ich habe hinter mein "Statement" einen Smiley gesetzt!
Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de- Bearbeitet Uwe RickenMVP Donnerstag, 11. Oktober 2012 07:26
-
Hallo,
schon das "ordentliche runterfahren" wäre für eine Fehlersimulation zu "milde".
Dort müsste man einen Stromausfall oder größeren Hardware-Defekt (Mainboard durchgeschmort) simulieren;
was man am einfachsten durch Stecker ziehen "erledigt".Beim Database Mirroring wiederum muss man sich nicht ums Hochfahren kümmern,
das funktioniert bei entsprechender Konfiguration automatisch, mehr siehe Link oben.Nur durch einen harten Absturz bekommst Du "abgebrochene Transaktionen", wodurch u. a. sauberes Rollback getestet wird.
Denn je nachdem wie gut die nutzenden Applikationen geschrieben sind, kann es Probleme geben,
wenn "halbe Datenstände" nach einem Abbruch vorhanden bzw. hergestellt werden -
und externe Software wie Double Take könnte das u. U. verursachen.Im ungünstigen Fall könnte dabei heraus kommen, dass Anwendungen angepasst/verbessert werden müssen.
Wenn Du weitere Infos brauchst, schau Dich mal im Blog von Paul Randall um,
ein Artikel zum Einstieg:http://sqlskills.com/blogs/paul/post/Important-things-for-DBAs-to-consider.aspx
Gruß Elmar
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Donnerstag, 1. November 2012 10:14
-
Hi,
PS: Die prod DB ist ja noch online, wenn ich die Daten hole. Erst nach dem ich die Daten geholt habe fahre ich den prod Server runter und Back-up hoch.
ich kann keine Software nutzen, der den Vergleich zwischen zwei online Datenbanken erstellt.
Red Gate kann erheblich mehr als nur zwei Livedatenbanken miteinander vergleichen. Das wüsste man, wenn man sich die Vorschläge, die man so bekommt, auch nur ansatzweise angeschaut hätte. Dass da dann auch Sachen dabei sind, die dein Szenario unterstützen.
Aber ehrlich gesagt hab ich nicht wirklich Lust, mich überhaupt noch mit dem Thema zu befassen, denn wer solche Antworten gibt:
wenn du keine Lösung für mein Problem hast und einfach nur dumm daher schwätzen kannst, dann lass es lieber.
sollte sich das Thema Foren komplett schenken, denn mit den Umgangsformen hat derjenige es nicht so, wie man es erwarten dürfte.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo,
ist die Thematik abgeklärt?
Wenn ja, bitte auch die Antworten markieren, die Dir geholfen haben.
So dass auch andere davon profitieren können.
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.