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
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
Comment