Sie können den Befehl Text jeden Schritt Ihrer Arbeit mit der folgenden Abfrage erhalten:
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
Sie können dann über den Befehl Text jeden Jobschritt suchen um nach Namen für Datenbanken, Tabellen und gespeicherte Prozeduren zu suchen. Dies ist einfacher, wenn Sie konsistente Benennungskonventionen für Ihre Objekte haben (z. B. Tabellennamen beginnen mit t_, Namen gespeicherter Prozeduren beginnen mit usp_). Denken Sie daran, Kommentare bei Ihrer Suche auszuschließen.
Eine Bibliothek für reguläre Ausdrücke erleichtert diese Aufgabe, aber die Unterstützung für sie ist in nativem T-SQL nicht enthalten. Es gibt more than one way, um SQL 2000 zu regular expression support hinzuzufügen, oder Sie können eine andere Sprache/ein anderes Tool verwenden, um die Suchvorgänge auszuführen.
Leider gibt es, abhängig von der Komplexität der T-SQL-Befehle, möglicherweise keine 100% garantierte Möglichkeit, Objektnamen zu identifizieren, ohne einen T-SQL-Parser zu schreiben (oder einzukaufen).
Wenn Sie die SQL-Anweisungen aus der obigen Abfrage erhalten, empfehle ich, sie nicht direkt zu analysieren, sondern die Referenzen aus einem geschätzten Abfrageplan zu analysieren. Dies ist viel einfacher als das Parsen der SQL direkt selbst. Wenn Sie auf SQL 2005 waren, könnte ich Ihnen einige xquery Beispiele geben, oh gut :( – ahains