Concatenamento dei processi dell'agente SQL Server


9

Ho diversi pacchetti di lavoro per ognuno di essi ho impostato un lavoro in SQL Server Agent. A volte dovrei correre tutti insieme. Qual è il modo migliore per eseguirli tutti in una determinata sequenza? Sono un po 'sorpreso che l'agente SQL Server non sia in grado di includere i lavori come passaggi di lavoro da eseguire. Ci ho provato


1
+2 Stavo pensando a questa notte scorsa :)
jcolebrand

1
ognuno dei tuoi articoli deve essere un lavoro separato? Potrebbero essere configurati in un lavoro principale con passaggi di lavoro separati e per ogni passaggio di lavoro aggiungere t-sql o altra logica che determina se il passaggio deve essere eseguito e in che modo (ad es. Se (condizione = vero) funziona altrimenti non fa nulla.
johndacostaa

Grazie a tutti per avermi dato un po 'di aiuto, sembra che Aarons abbia suggerito che il modo in cui mi sto avvicinando è quello di cui ho bisogno.
Vedrò

Dici "pacchetti", intendi i pacchetti SSIS?
SqlSandwiches,

d'accordo con John DaCosta. Usa i passaggi con le condizioni.
Alex_L

Risposte:


5

Esistono strumenti di terze parti che ti permetteranno di farlo, se non hai il tempo della curva di apprendimento o l'esperienza esistente per usare SSIS. Disclaimer: lavoro per una di quelle aziende. Scopri Event Manager da SQL Sentry: gestisce i lavori di SQL Server (compresi i pacchetti SSIS), le attività pianificate di Windows e persino i lavori Oracle. Ecco le funzionalità di SQL Server (inclusi concatenamento e accodamento):

http://sqlsentry.net/event-manager/sql-server-enterprise-features.asp

Purtroppo non penso che sarai in grado di utilizzare SQL Agent da solo per concatenare più lavori. Il metodo sp_start_job suggerito da Marian dà il via ai lavori in modo asincrono; non puoi aspettare che si completino prima di passare al comando successivo o al passaggio successivo.


Umm, penso che possa interrogare le tabelle di sistema msdb e avere uno stato degli altri lavori (e dei loro passi). Se sbaglio, mi scuserò e ti darò un pacchetto di 6 per aver rivelato questo :-).
Marian,

Non capisco il tuo punto. In che modo la query delle tabelle msdb lo aiuterà a concatenare i lavori insieme? DURANTE 1 = 1 fino a quando lo stato non cambia? Notifiche richieste? Sicuramente ci sono molti modi in cui puoi farlo manualmente, ma sarà molto più complesso della semplice chiamata a sp_start_job.
Aaron Bertrand

8

L'agente SQL non è considerato "classe enterprise" come pianificatore di processi. Manca molte funzionalità che finisci per dover costruirti. Un esempio sarebbe le dipendenze. Di conseguenza, si è costretti a mettere la maggior parte di questa logica nei pacchetti SSIS. Non necessariamente una brutta cosa ... solo un dolore per costruire e gestire te stesso.

Quindi, questa è la mia risposta, crea un pacchetto SSIS e usa alcuni comandi t-sql per chiamare i lavori di SQL Agent come desideri. Assicurati di avere i tuoi requisiti e scenari chiaramente definiti. Ad esempio, potresti non voler avere più lavori che colpiscono le stesse tabelle contemporaneamente.

HTH


Silly me mi aspetto uno schedulatore "enterprise" in un prodotto "Enterprise Edition" così maturo :). Speravo di poter includere molte cose come passaggio, divertente che il più ovvio (un altro lavoro) non sia disponibile come oggetto eseguibile. Uso i lavori per eseguire pacchetti SSIS che presentano molta complessità, dover creare un altro pacchetto SSIS per eseguire in modo flessibile i lavori non mi sembra l'approccio giusto. Soprattutto da quando finirò di nuovo con l'asynch sp_start_job.
nojetlag,

6

Dovresti provare usando uno script T-SQL nei passaggi dei tuoi lavori, usando la procedura memorizzata dal sistema sp_start_job . Ti permetterà di concatenare quanti lavori vuoi.


Come menzionato da Aaron, non mi permetterà di mantenere una determinata sequenza, poiché spareranno tutti quasi allo stesso tempo (a causa del fatto che sono asincroni). Quindi questo non è davvero un approccio concatenato, piuttosto un approccio di raccolta :)
nojetlag il

Ok, forse non è molto semplice, ma puoi comunque eseguire una query sulle tabelle di sistema msdb, puoi aspettare un tempo specifico .. quindi eseguire nuovamente la query. In alternativa, è possibile creare una tabella di tracciamento in cui inserire lo stato dei passaggi dei lavori e, in base a un trigger, è possibile attivare automaticamente i passaggi successivi. Oppure puoi acquistare uno strumento che lo fa e aggiunge un po 'più di valore e mostra anche un'interfaccia utente di fantasia :-). Ci sono opzioni per ognuno ..
Marian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.