-1
매주 내 스크립트를 실행하기 위해 Windows 서비스에서 작업을 예약하려고합니다. SQL 작업을 수행하고 싶지 않습니다. 아이디어가 있으십니까?Windows 서비스를 통해 SQL 스크립트 실행 C#
매주 내 스크립트를 실행하기 위해 Windows 서비스에서 작업을 예약하려고합니다. SQL 작업을 수행하고 싶지 않습니다. 아이디어가 있으십니까?Windows 서비스를 통해 SQL 스크립트 실행 C#
예약 라이브러리를 사용할 수 있습니다. CRON 트리거를 지원합니다. 그래서 당신은 같은 간단한 작업을 정의 할 수 있습니다 :
public class Sqljob : IJob
{
#region Constructors
public Sqljob()
{
}
#endregion
#region IJob members
public void Execute(IJobExecutionContext context)
{
// Perform your SQl work here
}
#endregion
}
을 그리고 인스턴스화 트리거와 함께 작업을 예약 할 수있는 스케줄러를 가지고 :
public class TaskScheduler : ITaskScheduler
{
#region Private fields
private readonly IScheduler _scheduler;
#endregion
#region Constructors
public TaskScheduler(IScheduler scheduler)
{
_scheduler = scheduler;
}
#endregion
#region ITaskScheduler members
public string Name
{
get { return this.GetType().Name; }
}
public void Run()
{
ScheduleSqlJob();
_scheduler.Start();
}
public void Stop()
{
if (_scheduler != null) _scheduler.Shutdown(true);
}
#endregion
#region Private methods
private void ScheduleSqlJob()
{
var jobDetails = JobBuilder.Create<Sqljob>()
.WithIdentity("Sqljob")
.Build();
var trigger = TriggerBuilder.Create()
.StartNow()
.WithCronSchedule("// Get your CRON expression here"))
.Build();
_scheduler.ScheduleJob(jobDetails, trigger);
}
#endregion
}
그리고 서비스 같은 스케줄러 호출 할 수 있습니다
을public partial class MyService : ServiceBase
{
#region Fields
private readonly ITaskScheduler _taskScheduler;
#endregion
public MyService(ITaskScheduler taskScheduler)
{
InitializeComponent();
_taskScheduler = taskScheduler;
}
protected override void OnStart(string[] args)
{
_taskScheduler.Run();
}
protected override void OnStop()
{
_taskScheduler.Stop();
}
}