2009-11-05 11 views
1

Est-il possible d'exécuter plusieurs procédures stockées qui s'exécutent en arrière-plan?Lancer plusieurs procédures stockées pour s'exécuter en arrière-plan sur SQL Server Express Edition

Les procédures stockées doivent être lancées à partir d'une seule procédure stockée principale, de la même manière que plusieurs threads de travail sont générés. Par exemple:

CREATE PROCEDURE MyLauncher 
AS 
BEGIN 
    BEGIN 
     @EXEC MyBackgroundSP01 -- Runs in parallel to the other 2 
     @EXEC MyBackgroundSP02 -- Runs in parallel to the other 2 
     @EXEC MyBackgroundSP03 -- Runs in parallel to the other 2 
    END 
END 

Répondre

2

Non, ce n'est pas possible comme vous l'avez décrit. Vous pouvez exécuter plusieurs jobs de SQL qui exécutera les procédures en même temps/

+0

La procédure doit s'exécuter dans MS SQL Express Edition. Les tâches ne peuvent donc pas être . Je vais modifier la question pour le mentionner. –

+0

Qu'est-ce qui appelle la procédure? Pourquoi ne pas avoir l'appelant gérer le filetage? – JoshBerke

+0

SQL Server appelle la procédure au démarrage. Je peux toujours contourner cela en demandant à SQL Server d'appeler les procédures individuellement, mais j'ai pensé que je vérifierais pour voir s'il y avait une manière plus élégante. J'ai le sentiment que j'essaie de faire quelque chose qui viole les principes ACID pour les transactions 8) –

0

Si vous exécutez ils dans la même procédure, il va lancer dans le même fil (et dans la même transaction interne, ce qui peut rendre le journal très grand).

0

Pas avec du T-SQL pur. Mais vous pourriez écrire une petite application dotNET pour les exécuter de manière asynchrone assez facilement, tant que vous laissez l'option de connexion jusqu'à ce que les trois sont terminés.

0

Si les deux procédures stockées ont même paramètre vous pouvez créer une nouvelle procédure de magasin comme

create third procedure 
(@colname int) 
as 
begin 

exec first procedure 
exec second procedure 
end 

exec third procedure 

Vous pouvez l'essayer. Je suis sûr que c'est approprié.