在VB.NET中读取SQL Server作业的内容

时间:2010-09-24 16:10:36

标签: vb.net sql-server-2000 sql-job

我正在编写一个应用程序,它将在我们所有客户端的系统上调用SQL Server作业。

我能够执行它,并等到它完成。它有一个输出文件,保存位置硬编码到作业中,但这并不是所有客户端上的相同位置。

由于系统上的作业相同,减去这个值,我希望我的代码读取作业的脚本并解析出位置。

我无法弄清楚如何获得作业本身的实际文本。

这在.NET中可行吗?如果是这样,怎么样?

2 个答案:

答案 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.sysjobsmsdb.dbo.sysjobs