如何从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语言。