Announcement

Collapse
No announcement yet.

Deadlock -Replikation/Trigger

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

  • Deadlock -Replikation/Trigger

    Hi,

    folgendes Problem: über bcp importieren wir grössere Datenmengen aus div. flatfiles... dies kann auch innerhalb sehr kurzer abständer erfolgen (ist automat.); die importtabelle wird via transaktion + push abo repliziert auf einen anderen sql 2005 server. auf der ziel tabelle der replikation liegt ein trigger welcher ds aufbereitet und ergänzt, danach in produktionstabelle inserted. alle 2 minuten überprüft ein task ob neue daten in der produktionstabelle vorhanden sind und bearbeitet diese weiter.
    funkt. zu 85% echt gut.
    leider kommt es zu diesem fehler/ deadlock:
    es sollen daten repliziert werden, prozedur auf produktionstabelle liest.
    dieses führt zum deadlock, den man nur noch so aufheben kann:
    proz abbr, repl. aus, trigger aus, repl. an, trigger an, manuelles auslösen des triggers, proz ausführen.
    mittlerweile hab ich dafür ein skript geschrieben der dieses bewältigt - ist aber für produktion/ automatisierung eher nicht geeignet.
    überlegung wäre: ich überprüfe ob gerade repl. wird bevor ich die proz auf der produktionstabelle starte... aber der agent läuft ja eh immer, kann ich das tatsächliche replizieren abfragen?
    gibt es noch einstellungen die ich vornehmen kann um z.b. eine datei zuerst zu repl. inkl des triggers bevor die neuen daten übertragen werden (oder wird das ganze sowieso nach warteschlange abgearbeitet)?
    für eure vorschläge vielen dank im voraus
    grüsse
    oliver

  • #2
    Hallo oliver.

    hört sich recht kompliziert an.
    Was mir ein wenig sorgen macht, ist die Kombination aus
    Trigger, Replikation und zeitgesteuertem Task, weil sich da halt
    immer mal irgendwas in Quere kommen kann/muss.

    Ich würde mal versuchen, dass alles durch einen "Master-Aufruf"
    zu erledigen. Also erst Import, dann Synchro. und dann Datenaufbereitung.
    Evtl. konntest Du über eine "eigene Steuertabelle" definieren, ob jetzt
    der Tigger bzw. der Zeitgesteuerte Task losrennen darf.

    Gruß
    Henning

    Comment


    • #3
      Meines Erachtens passt der Trigger hier nicht so richtig rein. Wenn schon alle 2 Minuten die Daten auf neue Datensätze überprüft werden, dann können doch auch die Funktionen des Triggers mit abgehandelt werden, oder?

      Beim Replizieren gibt es ein Vorlauf- und ein Nachlaufscript. Wir verwenden dieses um den aktuellen Status in eine Tabelle zu schreiben. Die Verarbeitungsprozedur könnte dann den Status erst prüfen bevor verarbeitet wird.

      MfG, Thomas

      Comment

      Working...
      X