2010-10-19 10 views
9

ho alcuni processi pianificati nel mio Agente SQL:Come prevenire Sql Server Jobs per eseguire contemporaneamente

  • Job1, eseguendo ogni 2 minuti
  • Job2, l'esecuzione ogni 10 minuti
  • Job3, l'esecuzione di ogni 15 minuti

Come si può vedere, più processi possono essere eseguiti contemporaneamente. Quando questi lavori vengono eseguiti contemporaneamente, l'utilizzo della CPU si riduce al 100%.

C'è una soluzione? C'è un modo per controllare il numero di lavori in esecuzione contemporaneamente? Nota: ho bisogno di questi lavori per eseguire circa nel periodo appropriato.

+0

È possibile utilizzare Mutex per impedire l'esecuzione di più processi contemporaneamente: quale lingua si utilizza per inviare query SQL al DB? – SlappyTheFish

+0

questi sono lavori in SQL Server Agent. – ehsan

risposta

12

Utilizzare un blocco sessione di via sp_getapplock

Stai chiedendo per la concorrenza controllata dall'utente, e questo di solito è il modo migliore.

Ciò consente di attendere o interrompere se il blocco è già trattenuto da un altro lavoro. Lo usiamo in uno o 2 posti per fermare più utenti costringendo la stessa attività a sovrapporsi. Funziona bene.

+3

+1: Dam Vorrei saperlo di questi anni fa. Precedentemente, avevo sviluppato la mia soluzione a questo tipo di problema utilizzando una tabella di stato per monitorare lo stato corrente di un determinato processo. –

+0

@John Sansom: Felice di essere al servizio ... Se puoi usare i lock Transaction anche questo si autoalimenta. – gbn

Problemi correlati