Holger: Befehl, um nur geänderte Datensätze upzudaten ??

Hallo,

bestimmt wurde das schon einmal ins Forum gepostet, habe es leider nur noch nicht gefunden...

Zu meinem Problem: Gibt es einen Befehl, mit dem man nur diejenigen Zeilen in einer Tabelle automatisch updatet, die sich geändert haben ? Mit "update" kann ich das, soweit es die Referenzhilfe hergibt, nicht realisieren.
Ich möchte mir Datensätze aus einer DB holen, die dann mit den Datensätze einer anderen DB vergleichen und dann eben nur die notwendigen Updates durchführen.

Vielen Dank,
Holger

  1. Hi Holger,

    wie vergleichst Du denn die Datensätze?? Haben die PrimaryKeys (also
    eindeutige Schlüssel)?

    Mit welcher Datenbank arbeitest Du denn? MySQL?

    Gruss vom HOrst

    1. Hallo Horst,

      wie vergleichst Du denn die Datensätze?? Haben die PrimaryKeys (also
      eindeutige Schlüssel)?

      Mit welcher Datenbank arbeitest Du denn? MySQL?

      muss mit MS SQL arbeiten, da habe ich zur Zeit keine andere Möglichkeit.
      Wie ich die Datensätze vergleiche, ist ja genau meine Frage. Ich hätte Primary Keys verfügbar (bzw. sie sind definierbar).
      Am besten wäre es, wenn man Änderungen aus jeder Column berücksichtigen könnte.

      1. Hi,

        Wie ich die Datensätze vergleiche, ist ja genau meine Frage.

        1.) kenne den Ist- und den Soll-Stand.
        2.) Vergleiche.

        Dies kannst Du entweder per SQL machen, oder per umgebende Programmlogik. Im Falle von SQL hängt es von der Optimierungs-Strategie des DBMS ab, ob dies beim UPDATE bereits nebenbei geschieht oder nicht.

        Ich hätte Primary Keys verfügbar (bzw. sie sind definierbar).

        Dann ist es leicht, den Ist-Stand in die Programmlogik zu ermitteln.

        Am besten wäre es, wenn man Änderungen aus jeder Column berücksichtigen könnte.

        Nicht nur am besten, sondern nötig.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Ist es performanter, einfach ein Update der kompletten Table durchzuführen oder bringt solch ein Vergleich kürzere Rechen- und Wartezeiten mit sich?

          Danke,
          Holger

          1. Hi, hallo

            MS SQL ...

            mit was programmierst du denn sonst noch so?
            woher sollen Daten wohin geupdatet werden:
               innerhalb der selben DB,
               zwischen mehreren DBs auf dem selben phys. Server
               zwischen mehreren DBs auf unabhängigen Servern
            wie hoch würde der Updateaufwand von Datenseite her sein ... GROSSE tabellen ??
            du möchtest Daten synchronisieren oder replizieren (dazu bringt MS SQL imho eigene Funktionen mit)?
            welche synch Richtung hast du ... unidirektional oder bidirektional?

            Synchronisieren ist schon einiges komplizierter ...

            um "Updates" an einem Datenstamm (von zweien) festzustellen brauchst du (möglichst) an dem Punkt der Originaldaten die Information über den Datenstand _beider_ Datenstämme ... (ist zustand)

            Ist es performanter, einfach ein Update der kompletten Table durchzuführen oder bringt solch ein Vergleich kürzere Rechen- und Wartezeiten mit sich?

            hängt u.a. von den o.g. Faktoren ab

            Tschau, tschüß,
            Frank

            1. Hi Frank
              zu deinen Fragen:

              mit was programmierst du denn sonst noch so?

              mir steht asp zur Verfügung

              woher sollen Daten wohin geupdatet werden:

              zwischen zwei unabhängigen Servern

              wie hoch würde der Updateaufwand von Datenseite her sein ... GROSSE tabellen ??

              Es wären 4 bis 6 Tabellen mit jeweils 200 bis 700 Datensätzen

              welche synch Richtung hast du ... unidirektional oder bidirektional?

              unidirektional

              So wie es aussieht, werde ich nun die kompletten Tabellen updaten, wenn es in MS SQL keine Automatisierung gibt.

              Danke,
              Holger

              1. Hi, hallo

                mit was programmierst du denn sonst noch so?
                mir steht asp zur Verfügung

                ASP ist eine Plattform !   aber daraus läßt sich auf in VBS/JS verwendbare com-Objekte schließen
                ASP.net würde sich da noch besser eignen, es bringt gerade für solche Probleme interessante Ansätze mit.

                woher sollen Daten wohin geupdatet werden:
                zwischen zwei unabhängigen Servern

                wie erstellst du die Synch-Verbindung?

                wie hoch würde der Updateaufwand von Datenseite her sein ... GROSSE tabellen ??
                Es wären 4 bis 6 Tabellen mit jeweils 200 bis 700 Datensätzen

                aha ... nicht besonders viel, aber bedenkenswert ..

                welche synch Richtung hast du ... unidirektional oder bidirektional?
                unidirektional

                du beziehst immer wieder die selben daten?!
                kannst du den Quellserver anweisen, selbst Deltas zwischen zwei Ständen zu generieren, dann bräuchtest du dem Quellserver nur ein Handler mitgeben, der nur einen Teil der Datensätze dann zusammenstellt und dir zurückgibt.

                So wie es aussieht, werde ich nun die kompletten Tabellen updaten, wenn es in MS SQL keine Automatisierung gibt.

                freunde dich mal mit dem Gedanken XMLHTTP-Webrequest, Recordsets als XML usw. an, da liegt der Schlüssel ...

                Tschau, tschüß,
                Frank

                1. du beziehst immer wieder die selben daten?!
                  kannst du den Quellserver anweisen, selbst Deltas zwischen zwei Ständen zu generieren, dann bräuchtest du dem Quellserver nur ein Handler mitgeben, der nur einen Teil der Datensätze dann zusammenstellt und dir zurückgibt.

                  Das wäre in Tat ein guter Ansatz.
                  Es ist nur so, dass ich keinerlei Konfigurationen am Quellserver durchführen kann.

                  Interessante Denkansätze, ich werde am Ball bleiben.

                  Gruß,
                  Holger

          2. Hi,

            Ist es performanter, einfach ein Update der kompletten Table durchzuführen oder bringt solch ein Vergleich kürzere Rechen- und Wartezeiten mit sich?

            diese Frage lässt sich ganz klar mit "ja" beantworten. Für eine Wahl einer der geoderten Alternativen ist die Frage um einige Lichtjahre zu weit auf Seiten der Pauschalität angesiedelt.

            Im übrigen nehme ich doch an, dass Deine UPDATE-Statements eine WHERE-Clause beinhalten, oder?

            Cheatah

            --
            X-Will-Answer-Email: No
      2. HI,

        Du solltest aufjeden Fall PrimaryKeys einführen.
        Du könntest Dich mal mit Constraints beschäftigen...
        Schau mal, ob Du das was in der Doku findest, kenne mich mit MS Sql
        nicht aus.

        Sind die Tabellen in einer Datenbank?