2009-06-05 5 views
1

J'ai un travail SQL Server tous les soirs, planifié sur l'agent SQL.Objets utilisés par le travail SQL Server

Il utilise un certain nombre de bases de données, de procédures stockées et de tables.

Quel est le meilleur pour obtenir une liste de ceux-ci?

(Son SQL Server 2000)

Répondre

2

Vous pouvez obtenir le texte de commande de chaque étape de votre travail avec la requête suivante:

SELECT sj.name   AS job_name 
     ,sjs.step_id 
     ,sjs.step_name 
     ,sjs.command 
FROM msdb.dbo.sysjobs   AS sj 
JOIN msdb.dbo.sysjobsteps  AS sjs 
ON sj.job_id = sjs.job_id 
WHERE sj.name = '~your job name~' 
AND sjs.subsystem = 'TSQL' 
ORDER BY sj.name 
     ,sjs.step_id 

Vous pouvez ensuite rechercher dans le texte de commande de chaque étape de travail rechercher des noms de base de données, de table et de procédure stockée. Cela est plus simple si vous avez des conventions de dénomination cohérentes pour vos objets (par exemple, les noms de tables commencent t_, les noms de procédures stockées commencent par usp_). N'oubliez pas d'exclure les commentaires dans votre recherche. Une bibliothèque d'expressions régulières simplifie cette tâche, mais sa prise en charge n'est pas incluse dans le langage T-SQL natif. Il y a more than one way pour ajouter regular expression support à SQL 2000, ou vous pouvez utiliser un autre langage/outil pour effectuer les recherches.

Malheureusement, en fonction de la complexité des commandes T-SQL, il ne peut y avoir aucun moyen garanti à 100% d'identifier les noms d'objet sans écrire (ou acheter) un analyseur T-SQL.

+1

Si vous obtenez les instructions sql de la requête ci-dessus, je vous recommande de ne pas les analyser directement, mais d'analyser les références à partir d'un plan de requête estimé. C'est beaucoup plus facile que d'analyser le sql directement vous-même. Si vous étiez sur sql 2005 je pourrais vous donner quelques exemples de xquery, oh bien :( – ahains

Questions connexes