如何从Windows应用程序调用SQL Server代理中的作业

我在SQL Server作业代理中安排了一个作业xyz 。 现在我想从我的Windows应用程序调用该作业。

调用sp_start_job

 exec msdb.dbo.sp_start_job @job_name = 'YourJobName' 

sp_start_job MSDN参考

 SqlConnection DbConn = new SqlConnection(YourConnectionString); SqlCommand ExecJob = new SqlCommand(); ExecJob.CommandType = CommandType.StoredProcedure; ExecJob.CommandText = "msdb.dbo.sp_start_job"; ExecJob.Parameters.AddWithValue("@job_name", "YourJobName") ExecJob.Connection = DbConn; //assign the connection to the command. using (DbConn) { DbConn.Open(); using (ExecJob) { ExecJob.ExecuteNonQuery(); } } 

代理作业通常只是运行查询的脚本。 有什么理由你不能只运行代理作业正在运行的查询?

代理只处理调度和失败通知等。这有点过于简化,但代理主要是具有运行查询的警报的调度程序。 尝试编写代理作业的脚本,看看是否可以移动到由代理和应用程序运行的存储过程。

该文档描述了所有选项。 如果不想使用TSQL,可以使用C#中的SMO Job类或其他.NET语言。