Befehl, um nur geänderte Datensätze upzudaten ??
Holger
- datenbank
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
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
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.
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
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
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
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
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
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
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
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?