murat1895 Geschrieben 13. Oktober 2016 Teilen Geschrieben 13. Oktober 2016 Hallo Zusammen! Ich verwende für eine Software eine Datenbank. In dieser Datenbank A ist ein View auf eine Datenbank B erstellt worden. Leider kommt es immer häufiger, aber beabsichtigt vor, dass die Datenbank B nicht erreichbar ist. Jedoch benötige ich in der Software eine stündlich exakten abgleich der Daten. Hat jemand eine Idee wie man das am besten Lösen könnte? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 13. Oktober 2016 Teilen Geschrieben 13. Oktober 2016 Wenn die Datenbank nicht erreichbar ist (was ich schon sehr merkwürdig finde), dann kannst du ja schlecht die Daten abrufen. Also muss eine Ausfallsicherheit geschaffen werden, z.B. einen weiteren Benutzer, wo die Daten redundant gespeichert werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 13. Oktober 2016 Autor Teilen Geschrieben 13. Oktober 2016 Das Problem ist, das es ab und an vor kommt das dieser MSSQL Datenbankserver neugestartet wird und dann für Weile nicht erreichbar ist. Mit ab und an meine ich maximal 1-2 mal im Monat, aber dieses leider im blöden Zeitraum. Der Datenbestand ändert sich in der Regel selten. Dennoch möchte ich die Daten möglichst aktuell halten. Ich denke es ist am sinnvollsten, die Daten aus der originalen Datenbank stündlich abzufragen (falls erreichbar) und in eine weitere Tabelle zu schreiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 13. Oktober 2016 Teilen Geschrieben 13. Oktober 2016 Hallo @murat1895! Oder man macht es gleich richtig und packt sich, wenn das Kriterium der Verfügbarkeit so wichtig ist, nen Failover Partner dazu und setzt den Primärserver als Principal für eine Spiegelung auf. Da spart man sich auch gleich die Frickelei. Gruß, Goulasz Mttkrb reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 13. Oktober 2016 Autor Teilen Geschrieben 13. Oktober 2016 In dem Bereich kenne ich mich wenig bis gar nicht aus. Ich weiß, dass es sicherlich besser ist, nen Spiegel-Server aufzusetzen. Allerdings habe ich gerade festgestellt das ich dann für das ganze noch einen dritten Server bräuchte als "Zeugen"? Klar ist das für die Verfügbarkeit der Anwendung am besten. Ich weiß allerdings nicht inwiefern sich dieser Aufwand und die Kosten gegenüber dem Nutzen lohnt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 13. Oktober 2016 Teilen Geschrieben 13. Oktober 2016 Wenn du das nicht weißt, wer dann? Wenn der Server zwei mal im Monat für eine gewisse Zeit offline ist, dann ist er ja für, sagen wir mal, 95% der Zeit online und da sollte man sich auch fragen, ob für die restlichen 5% überhaupt sich der Aufwand lohnt, irgendwas zu machen, wenn die Daten sich sowieso kaum ändern. Vor allem in der Zeit, wo er offline ist, die Daten sich sowieso nicht ändern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 Hallo @murat1895! Natürlich kannst du auch einen SQL Server Agent Job anlegen. Du hast dann aber immer noch das Problem, dass dein System nicht mehr erreichbar ist, wenn dein "Server A" abraucht. Wenn das eine im Kundeneinsatz befindliche Anwendung ist, halte ich es für grob fahrlässig ohne Spiegelung zu arbeiten. Ist das nur Bastelei für dich? Dann bitte: SSIS-Pakete in nem eigenen Prozesskontext, Agent Jobs direkt auf dem SQL Server, nen Windows Service, der alle X $Zeitspanne einen Task ausführt. Die Möglichkeiten der Bastelei sind da vielfältig. Der Agent Job wäre mein Favorit in dem Kontext. Hier noch ein bisschen Vorarbeit für das Thema: how to schedule a job for sql query to run daily? - stackoverflow Viel Erfolg und Gruß, Goulasz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 Nachtrag: Wenn dein "Server B" in dem Zeitraum, in dem der Job laufen und deine Daten auf "Server A" für die View schreiben soll, grade nicht verfügbar ist, hilft dir das übrigens auch nicht weiter. Wenn du wirklich eine Steigerung der Verfügbarkeit willst, kommst du um einen Failover-Partner imho nicht rum. Gruß, Goulasz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 14. Oktober 2016 Autor Teilen Geschrieben 14. Oktober 2016 (bearbeitet) @Whiz-zarD Ja, die Frage ist, ob sich der Aufwand überhaupt lohnt. Das Problem ist einfach nur, dass während der 5% wo der Server down ist, die Anwendung, die einen View auf die Datenbank hat auch nicht funktioniert. Bei dieser Anwendung ist es egal, ob der Datenbestand auf die Stunde genau aktuell ist. @Goulasz Die Platten etc. werden gespiegelt und regelmäßige Backups angelegt. Jedoch gibt es keinen Echtzeit-Spiegelserver. Bei einem Ausfall der Hardware kann innerhalb weniger Minuten der laufende Zustand wiederhergestellt werden. Ich denke so grob fahrlässig ist es dann wiederrum nicht. Bearbeitet 14. Oktober 2016 von murat1895 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 vor 17 Minuten schrieb murat1895: [...] Bei einem Ausfall der Hardware kann innerhalb weniger Minuten der laufende Zustand wiederhergestellt werden. Ich denke so grob fahrlässig ist es dann wiederrum nicht. Und auf welchem Server wird der "laufende Zustand" dann verfügbar gemacht um Daten für deine View abrufbar zu halten? Gruß, Goulasz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 vor 31 Minuten schrieb murat1895: @Whiz-zarD Ja, die Frage ist, ob sich der Aufwand überhaupt lohnt. Das Problem ist einfach nur, dass während der 5% wo der Server down ist, die Anwendung, die einen View auf die Datenbank hat auch nicht funktioniert. Bei dieser Anwendung ist es egal, ob der Datenbestand auf die Stunde genau aktuell ist.[...] Eventuell könnte man die angezeigten Daten ja auch einfach zwischenspeichern und falls Server B nicht verfügbar ist einfach eine alte Ansicht zeigen. Wenn es dabei eh nicht auf ein paar Stunden ankommt, wäre so etwas ja durchaus denkbar. Mittels MySQL-Statement kann man ja z.B. mit PHP überprüfen, ob ein Server erreichbar ist, oder ob nicht und falls nicht im Quelltext etwas anderes anzeigen lassen. Wobei ich persönlich die Datenbank alle x Stunden (je nachdem wie viel Daten sich ändern) mit einer neuen Datenbank abgleichen lassen und diese dann nutzen würde. Schlägt eine Synchronisierung fehl, ist das ja kein Problem bei den Daten anscheinend. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 Man könnte es auch so machen, dass man von der View eine Tabelle auf Datenbank A erstellt und dann mit dieser Tabelle arbeitet. Wenn Datenbank B erreichbar ist, wird dann die Tabelle neu erstellt und wenn die dann nicht erreichbar ist, hat man weiterhin den Stand. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 14. Oktober 2016 Autor Teilen Geschrieben 14. Oktober 2016 (bearbeitet) Aber dann würde ich ja jedesmal wenn eine Abfrage kommt, die Tabelle, falls die Datenbank B erreichbar ist, neu erstellen. Das wäre definitiv zu viel. Bearbeitet 14. Oktober 2016 von murat1895 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 Du hast doch nur die zwei Möglichkeiten: Entweder du sorgst für eine Ausfallsicherheit (wie sie auch immer aussehen mag) und du hast die Daten redundant oder du sorgst dafür, dass der Abgleich der Datenbanken nicht stattfinden kann, wenn Datenbank B nicht zur Verfügung steht. Man kann ja nicht zaubern und ein Abgleich implementieren, der auf eine Datenbank zugreift, die nicht da ist. Goulasz reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 vor 11 Minuten schrieb Whiz-zarD: [...]Man kann ja nicht zaubern und ein Abgleich implementieren, der auf eine Datenbank zugreift, die nicht da ist. Von jemandem mit deinem Nutzernamen wohnt dem Statement, so wahr es ist, eine gewisse Ironie inne. SCNR Panawr und allesweg reagierten darauf 2 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 Am 13.10.2016 um 13:33 schrieb murat1895: Das Problem ist, das es ab und an vor kommt das dieser MSSQL Datenbankserver neugestartet wird und dann für Weile nicht erreichbar ist. Mit ab und an meine ich maximal 1-2 mal im Monat, aber dieses leider im blöden Zeitraum. Wieso packt man Datenbank A und B nicht auf einen Server? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 14. Oktober 2016 Teilen Geschrieben 14. Oktober 2016 vor einer Stunde schrieb pr0gg3r: Wieso packt man Datenbank A und B nicht auf einen Server? Ich hoffe inständig, dass diese Möglichkeit aus irgendwelchen technischen Einschränkungen gar nicht erst besteht, ansonsten müsste ich mir von irgendwem die 15 Minuten Antworterstellung und Linksuche zurückkaufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 17. Oktober 2016 Teilen Geschrieben 17. Oktober 2016 Dann würde doch Datenbankserver A auch immer mal wieder neu gestartet werden... pr0gg3r und JimTheLion reagierten darauf 2 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.