Чтение содержимого задания SQL Server в VB.NET - PullRequest
1 голос
/ 24 сентября 2010

Я пишу приложение, которое будет вызывать задание SQL Server во всех системах нашего клиента.

Я могу выполнить его и дождаться его завершения.Однако у него есть выходной файл, местоположение сохранения которого жестко запрограммировано в задании, и это не одно и то же местоположение на всех клиентах.

Поскольку задание идентично в системах за вычетом этого единственного значения, я хочу, чтобы мой кодпрочитайте сценарий задания и проанализируйте его местоположение.

У меня возникли проблемы с выяснением, как получить фактический текст самого задания.

Возможно ли это в .NET?Если да, то как?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

Вы можете получить содержимое задания, используя следующий запрос:

SELECT [command]
FROM msdb.dbo.sysjobs job JOIN msdb.dbo.sysjobsteps steps
ON job.job_id = steps.job_id 
WHERE [name] = 'YourJobName'

Оттуда просто создайте набор записей в VB.NET и используйте запрос выше.

2 голосов
/ 24 сентября 2010

@ LittleBobbyTables, имеет правильный запрос. Однако, когда у вас есть сомнения или где система что-то хранит, посмотрите на сценарий, который SSMS генерирует для создания объекта.В этом случае задание SSMS вызывает несколько системных хранимых процедур.Вы можете взглянуть на код системных хранимых процедур в SSMS и увидеть, где все находится:

msdb.dbo.sp_add_job
msdb.dbo.sp_add_jobSchedule
msdb.dbo.sp_add_jobStep
msdb.dbo.sp_add_jobStep_internal

просто выберите базу данных msdb, затем Programmability, затем Stored Procedures, а затем System Stored Procedures, а затем найдите те, которые перечислены выше.Щелкните правой кнопкой мыши по ним и «Изменить», чтобы открыть исходный код.Только не сохраняйте никаких изменений!

, который в итоге будет msdb.dbo.sysjobs и msdb.dbo.sysjobs

...