我已在SQL Server作业代理中安排了作业xyz
。现在我想从我的Windows应用程序调用该作业。
答案 0 :(得分:25)
拨打sp_start_job
。
exec msdb.dbo.sp_start_job @job_name = 'YourJobName'
MSDN Reference on sp_start_job
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();
}
}
答案 1 :(得分:1)
代理作业通常只是运行查询的脚本。有什么理由你不能只运行代理作业正在运行的查询吗?
代理只处理调度和失败通知等。这有点过于简化,但代理主要是具有运行查询的警报的调度程序。尝试编写代理作业的脚本,看看是否可以移动到由代理和应用程序运行的存储过程。
答案 2 :(得分:1)
documentation描述了所有选项。如果您不想使用TSQL,可以使用C#中的SMO Job class或其他.NET语言。
答案 3 :(得分:0)
使用sp_start_job的方法有效,但是它遇到了一个问题,因为您不确定确切何时完成作业。该方法将在调用后立即返回,而不是在完成时返回。如果这对您很重要,这是一个使用SQL Server管理对象(SMO)的函数,该函数仅在作业完成时返回。您需要添加对以下类的引用:
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SqlEnum
Microsoft.SqlServer.ConnectionInfo
代码如下:
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Smo.Agent
public void RunSQLAgentJob(string JobName)
{
SqlConnection DbConn = new SqlConnection(connectionstring);
ServerConnection conn;
Job job;
Server server;
using (DbConn) {
conn = new ServerConnection(DbConn);
server = new Server(conn);
job = server.JobServer.Jobs(JobName);
// make sure it's not already running before starting it
if (job.CurrentRunStatus == JobExecutionStatus.Idle)
job.Start();
while (job.CurrentRunStatus == JobExecutionStatus.Executing) {
job.Refresh();
Console.WriteLine($"Current status of {JobName} is {job.CurrentRunStatus.ToString}");
System.Threading.Thread.Sleep(3000);
}
}
}
答案 4 :(得分:0)
using (var page = tess.Process(Pix.LoadFromFile("test.jpg"), PageSegMode.SingleBlock))
{
var iterator = page.GetIterator();
var attr = iterator.GetWordFontAttributes();
Debug.WriteLine(attr.PointSize);
}
示例可在以下位置找到:https://www.craftedforeveryone.com/start-stop-manage-ms-sql-server-agent-jobs-using-c-sharp/