Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

  • Autor

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.

  • Autor

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.

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. 

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 :goulasz: 

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 :goulasz: 

  • Autor

@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 von murat1895

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 :goulasz: 

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.

  • Autor

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 von murat1895

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.

 

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?

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. 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.