2009-07-10 7 views
0

J'ai une procédure stockée qui crée une base de données (ex: sp_createDB). De la même manière, je dois créer des centaines de bases de données en utilisant celui-là. Alors que je dois le mettre en boucle. Mais je ne sais pas comment le faire sqlserver. Comment puis-je faire cela dans sqlserver.comment exécuter une procédure stockée en continu?

Aidez-moi à cet égard.

Merci

Répondre

3

Vous pouvez utiliser ...

exec sprocName 
GO 100 

Voir plus here. En général, il est ...

GO [COUNT] 

Voir, MSDN.

+0

Une boucle while ne serait pas plus agréable? – Tetraneutron

+0

Salut JP, regardez ma réponse ci-dessous - http://stackoverflow.com/questions/1108017/how-to-execute-a-stored-procedure-continuosly/1108040#1108040 - pour une échappatoire si vous utilisez le "GO [ COUNT] "méthode. – Kirtan

+0

@Tetraneutron: Dans ce cas, je ne suis pas d'accord, même si je n'ai jamais utilisé cette méthode, il est clair que c'est très élégant en raison de la simplicité. Pourrait confondre les codeurs pas familiers avec la syntaxe. –

3

JP's answer est correct techniquement (GO [COUNT] peut être utilisé pour répéter un lot d'instructions COUNT fois), mais il y a une erreur logique. Votre procédure stockée aura besoin des paramètres différents à chaque fois qu'il exécute (car il doit créer BDs unique à droite?), De sorte que vous aurez à boucle autour de l'utilisation WHILE comme celui-ci -

DECLARE @Counter INT 
SET @Counter = 1 

DECLARE @DBName VARCHAR(20) 

WHILE (@Counter <= 100) 
BEGIN 
    PRINT @Counter 
    @DBName = 'DB' + CAST(@Counter AS VARCHAR) 
    EXEC dbo.CreateDB @DBName 
END 
GO 
+0

l'OP ne donne pas beaucoup de détails, mais il peut être possible pour la procédure de déterminer le nom de la base de données, donc un paramètre pas nécessaire. –

+0

Si tel est le cas, alors il peut certainement utiliser l'approche de JP. Mais idéalement c'est le cas, j'ai donc ajouté la boucle, et un paramètre à la procédure stockée. – Kirtan

1

Une boucle while serait bien à appeler N fois que d'autres ont suggéré, mais ...

nE PAS nOM VOS PROCÉDURES sP_ ...
nE PAS NOMMER VOS PROCÉDURES sP_ ...
nE PAS NOMMER VOS PROCÉDURES sP_ ...

Dans Sql Server, "sp_ ..." est réservé aux procédures stockées du système, et pourrait confondre les personnes familières avec cette convention! Cela peut poser des problèmes si Sql Server implémente sa propre procédure "sp_createDB". En outre, les procédures stockées s'exécuteront plus lentement si elles commencent par le préfixe sp_. Cela est dû au fait que SQL Server recherche un système stocké proc en premier. Par conséquent, il ne recommande pas de démarrer procs stocké avec un préfixe de sp

Questions connexes