If you want to execute an existing Microsoft SQL Server Agent Job in C# you an use the following function:
The function uses SQL authentication to connect to the Microsoft SQL Server instance.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Smo.Agent;
using Microsoft.SqlServer.Management.Common;
using System.Data;
public override void Execute()
{
Server server = new Server(@"MyServer\MyInstanceName");
try
{
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = "MyName";
server.ConnectionContext.Password = "MyPassword";
server.ConnectionContext.Connect();
Job job = server.JobServer.Jobs[Name];
job.Start();
}
finally
{
if (server.ConnectionContext.IsOpen)
{
server.ConnectionContext.Disconnect();
}
}
}
Add this after the above method to have the Job wait until it’s done
Thread.Sleep(5000);
job.Refresh();
while(job.CurrentRunStatus != JobExecutionStatus.Idle)
{
Thread.Sleep(5000);
job.Refresh();
}
Reference: http://www.roelvanlisdonk.nl/?p=1736