我正在编写一个应用程序,它将在我们所有客户端的系统上调用SQL Server作业。
我能够执行它,并等到它完成。它有一个输出文件,保存位置硬编码到作业中,但这并不是所有客户端上的相同位置。
由于系统上的作业相同,减去这个值,我希望我的代码读取作业的脚本并解析出位置。
我无法弄清楚如何获得作业本身的实际文本。
这在.NET中可行吗?如果是这样,怎么样?
答案 0 :(得分:3)
您可以使用以下查询获取作业的内容:
SELECT [command]
FROM msdb.dbo.sysjobs job JOIN msdb.dbo.sysjobsteps steps
ON job.job_id = steps.job_id
WHERE [name] = 'YourJobName'
从那里,只需在VB.NET中创建一个记录集并使用上面的查询。
答案 1 :(得分:2)
@LittleBobbyTables, has the correct query.但是,无论何时您有疑问或系统存储的内容,请查看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