Domanda

Voglio fare qualcosa del tipo:

exec sproc1 and sproc2 at the same time
when they are both finished exec sproc3

Posso farlo in dts. C'è un modo per farlo in Transact sql? O c'è un modo per farlo con uno script batch (ad esempio vbs o powershell)?

È stato utile?

Soluzione

sp _ start _ job

Al momento sto facendo una cosa simile, e l'unico modo che ho trovato per evitare di usare SSIS o una shell esterna è quello di dividere manualmente la mia routine di caricamento in "thread", quindi eseguire un singolo lavoro sqlagent master che a sua volta esegue tanti lavori sp _ start _ quanti sono i thread. Da quel punto, corrono tutti autonomamente.

Non è esattamente quello che stiamo cercando, ma il risultato è lo stesso. Se si verifica lo stato del lavoro per i lavori secondari, è possibile implementare anche l'avvio condizionato di sproc 3.

Qual è il punto in 8 core se non possiamo usarli tutti in una volta?

Altri suggerimenti

Potresti creare una CLR Stored Procedure che (usando C #) chiamerebbe i primi due sui loro thread, e poi bloccherebbe fino al completamento di entrambi ... quindi eseguirà il terzo.

Sei in grado di utilizzare sprocs CLR nella tua situazione? In tal caso, modificherò questa risposta per avere maggiori dettagli.

Hai assolutamente bisogno che entrambi gli SP siano eseguiti in parallelo?

Con semplici istruzioni CRUD all'interno di un singolo SP, ho scoperto che SQL S. fa un ottimo lavoro nel determinare quale di essi può essere eseguito in parallelo e farlo. Non ho mai visto SQL S. eseguire 2 SP in parallelo se entrambi sono chiamati in sequenza da un'istruzione T-SQL, non so nemmeno se sia possibile.

Ora, quindi, il DTS li esegue davvero in parallelo? Potrebbe essere semplicemente eseguirli in sequenza, quindi chiama il 3 ° SP dopo che l'ultimo è terminato correttamente.

Se li esegue davvero in parallelo, probabilmente dovresti rimanere con DTS, ma poi vorrei sapere cosa fa se ho una chiamata al pacchetto DTS, diciamo, 10 SP pesanti in parallelo ... Potrei devo fare alcuni test per impararlo da solo: D

Puoi usare SSIS. I vantaggi di questo sono che il pacchetto può essere archiviato in SQL Server e facilmente programmabile lì.

Da PowerShell o praticamente da qualsiasi linguaggio di scripting esterno, è possibile utilizzare la riga di comando SQL osql o sqlcmd. Questa tecnica può anche essere utilizzata per pianificarla su SQL Server sborsando anche usando xp_cmdshell.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top