2012-05-16 4 views
0

J'ai de nombreux scripts Transact-SQL (SQL 2005) dans un dossier destiné à être exécuté sous la forme d'un Job unique. Je voudrais les exécuter l'une après l'autre comme « sous-tâches planifiées » (un run clic) d'une manière ordonnée en fonction du nom de fichier (dossier système de fichiers contenant plusieurs fichiers * .sql), par exemple:Exécution de plusieurs scripts SQL dans leur intégralité Tâche dans Microsoft SQL Server 2005

01_init_vars.sql 
05_create_this_thing.sql 
10_create_another_thing.sql 
15_calculate_this_value_based_on_today_date.sql 
20_create_that_thing.sql 
25_summarize_finish.sql 

Chaque script SQL agit sur une partie différente de la base de données, parfois avec les mêmes tables, mais agissent à des «niveaux logiques» différents selon différents horodatages (je dois d'abord exécuter un script, puis un autre script, etc.). Tous ces scripts partagent « des variables d'environnement » que je voudrais mettre en une seule fois dans le premier script et les utiliser comme « variables de session SQL », par exemple:

DECLARE @Username NVARCHAR(100) 
SET  @Username = 'Blahblahblah' 

Je me demandais s'il y a un Microsoft SQL Server Management Studio Tool pour les fusionner et les exécuter tous, ou (mieux pour moi) un exemple de procédure stockée à exécuter.

Veuillez noter que dans certaines de ces "sous-tâches" il peut y avoir une procédure stockée, alors je voudrais prévenir les problèmes dus aux procédures stockées définies et exécutées dans d'autres procédures stockées, s'il y en a. Je suis tellement désolé pour cette question très simple, mais après avoir interrogé Google beaucoup de fois avec des mots clés différents, après avoir regardé les déclarations standard transact-SQl (site Web MSDN) je ne suis pas capable de trouver une bonne réponse et je pense que cela devrait être une "manière habituelle" d'exécuter des tâches sur une base de données SQL, il me manque probablement quelque chose et je ne trouve pas quoi.

Merci!

Répondre

0

Si vous partagez des variables entre les scripts, vous souhaitez probablement rechercher Sql Sever Integration Services (SSIS).

Vous pouvez contrôler le flux de données entre les scripts, configurer le 'routage' conditionnel pour l'ordre dans lequel les choses s'exécutent et bien d'autres choses dont vous n'aurez probablement pas besoin pour cette tâche.

Si vous ne pouvez pas utiliser SSIS pour une raison quelconque, pourquoi ne pas simplement créer un nouveau Job dans Sql Server Agent et ajouter chaque script comme une nouvelle étape dans le travail? Si vous avez besoin d'enregistrer les résultats de l'un pour l'utiliser dans un autre, créez simplement une table pour conserver ces valeurs pendant la durée du travail et faites en sorte que le script final les supprime en quelque sorte.

+0

Je ne peux pas "jouer beaucoup avec le système" Je peux le modifier grâce à une nouvelle version. Pendant la phase de développement, je dois annuler et modifier la base de données plusieurs fois, en gardant les choses séparées logiquement dans de nombreux fichiers différents, c'est très utile pour moi. Si je pouvais exécuter une procédure stockée écrite ad hoc en un seul clic, ce serait génial. Ensuite, après le débogage, je peux tout fusionner dans un fichier de script pour libérer le script entier. – TPPZ

+0

@TPPZ Eh bien, je suppose que vous pouvez toujours écrire un proc stocké «maître» qui exécute tous les autres? – Widor

+0

Ouais c'est ce que je voudrais faire, mais (croyez-moi) j'ai essayé sans succès plusieurs fois Google ou MSDN pour des exemples de travail minimum. – TPPZ