Announcement

Collapse
No announcement yet.

Die Client Applikationen nach Datenänderungen aktualisieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Die Client Applikationen nach Datenänderungen aktualisieren

    Hallo

    Ich habe eine kleine "Adress-Applikation" (Delphi 6) geschrieben, welche mit SQL Server(MSDE) verbunden ist.

    Meine Applikation läuft auf mehreren Rechner(ca. 4). Wie kann ich nun die Client-Daten aktualisieren, wenn auf der SQL-Datenbank eine Änderung an Daten gemacht wurden, z.B. eine neue Adresse durch Client X?

  • #2
    Hallo,

    wenn alle 4 Clients mit der <b>gleichen</b> MSDE-Datenbank arbeiten, bekommt ein Benutzer die Daten eines anderen Benutzers (fremde Transaktion) erst dann zu Gesicht, wenn er seine SELECT-Abfrage neu ausführt

    Comment


    • #3
      Ich möchte keinen Timer in meine Applikation einbauen um jede 5 Sekunde die Adress-Tabellen mit einer SELECT-Abfrage zu aktualisieren.

      Die Clients sollten bei einer Änderung auf dem Server, irgendwie benachrichtigt werden. Wie mache ich dies am besten?

      Fazit: 4 Clients sollen aktualisiert werden, wenn z.B. durch Client X, ein neuer Adresseintrag gemacht wurde.

      Problem: Durch einen Trigger(SQL MSDE) kann ich die Änderung feststellen, aber wie werden die Clients darüber informiert? SOAP? DCOM Client/Server

      Comment


      • #4
        Hallo,

        beim MS SQL Server 2000 wären die kostenfrei nachinstallierbaren <i>Notification Services</i> (siehe http://www.microsoft.com/sql/ns/default.asp) die passende Lösung für dieses Problem.

        Bei der MSDE 2.0 könnte der Trigger oder eine SP über sp_OACreate/sp_OAMethod ein eigenes COM-Objekt aufrufen, das dann einen vom Betriebssystem unterstützten Verteilweg (COM+ Event, Callback-Manager etc.) nutzt. Der Aufwand ist aber deutlich höher, als wenn jeder Client regelmässig die Datenbank nach dem letzten Änderungsstand anpollt (d.h. die SELECT-Abfrage muss nur einen einzigen Wert ermitteln). Erst dann, wenn eine Änderung erkannt wird, muss in jedem Fall die Ergebnismenge der SELECT-Abfrage neu eingelesen werden.

        &#10

        Comment

        Working...
        X