Stored Procedure parallel ausführen

28/11/2007 - 18:07 von AndyL | Report spam
Hallo,

ich habe ein progamm geschrieben das eine stored procedure ausführt. Das
ausführen der stored proc. erfolgt über Nachrichten die aus einer
messagequeue kommen (howerver, wichtig ist nur meine App. ist multithreaded)
Innerhalb meiner stored proc wir über prüft ob ein Wert vorhanden ist oder
in eine Tabelle eingefügt werden soll.
Manachmal kommt es zu der Situation, dass die Strored Proc von zwei threads
mit den gleichen parameter aufgerufen wird. Wàhren der erste Aufruf noch
dabei ist die Daten einzutragen, ist der zweite Aufruf der Meinung die Zeile
gibt es noch nicht in der Tabelle und will entsprechend die gleich Zeile
eintragen (Was zu einer PrimayKey exception führt)

Kann ich verhindern das eine StoredProc mehrfach mit den gleichen Parameter
aufgerufen wird?

mfg

Andy Lucas
 

Lesen sie die antworten

#1 Peter Fleischer
28/11/2007 - 18:12 | Warnen spam
"AndyL" schrieb im Newsbeitrag
news:
Hallo,

ich habe ein progamm geschrieben das eine stored procedure ausführt. Das
ausführen der stored proc. erfolgt über Nachrichten die aus einer
messagequeue kommen (howerver, wichtig ist nur meine App. ist
multithreaded)
Innerhalb meiner stored proc wir über prüft ob ein Wert vorhanden ist oder
in eine Tabelle eingefügt werden soll.
Manachmal kommt es zu der Situation, dass die Strored Proc von zwei
threads
mit den gleichen parameter aufgerufen wird. Wàhren der erste Aufruf noch
dabei ist die Daten einzutragen, ist der zweite Aufruf der Meinung die
Zeile
gibt es noch nicht in der Tabelle und will entsprechend die gleich Zeile
eintragen (Was zu einer PrimayKey exception führt)

Kann ich verhindern das eine StoredProc mehrfach mit den gleichen
Parameter
aufgerufen wird?



Anstelle zu verbieten, sollte man besser erlauben. Bau die Prozedur so, dass
sie problemlos parallel aufgerufen werden kann. Ggf. kann man den Aufruf
auch in eine Transaction kapseln, so dass Zugriffe auf mehrere Tabellen
innerhalb der Prozedur sequentiell abgearbeitet werden.

Viele Gruesse

Peter

Ähnliche fragen