在C#中使用SMO编程添加作业

flc45 2009-12-15 08:48:40
我使用如下方法可以创建成功,但无法将作业添加到本地服务器


/// <summary>
/// 创建包含步骤和计划的作业
/// </summary>
/// <param name="databaseName">数据库名</param>
/// <param name="jobName">作业名称</param>
/// <param name="description">作业说明</param>
/// <param name="strSQl">SQL命令</param>
/// <param name="startDate">开始日期,为null表示当前时间</param>
/// <param name="endDate">截止日期,为null表示无截止日期</param>

public Guid CreateJob(string databaseName, string jobName, string description,string strSQl,DateTime startDate,DateTime endDate)
{
//JobServer 对象具有作业、警报和操作员三个集合。
//OperatorCollection 对象表示可由 Microsoft SQL Server 代理自动向其发送事件通知的寻呼程序、电子邮件地址和 net send 操作员列表。
//AlertCollection 对象表示由 SQL Server 监视的系统事件或性能条件等情况的列表。
//JobCollection 对象稍微复杂一些。它表示按指定计划运行的多步骤任务列表。步骤和计划信息存储在 JobStep 和 JobSchedule 对象中。


////创建SQL代理服务操作员用户
//Operator op = default(Operator);
//op = new Operator(srv.JobServer, "Test_Operator");
//op.NetSendAddress = "Network1_PC";
//op.Create();

#region 创建作业

Job jb = new Job(sqlServer.JobServer, jobName);
jb.Description = description;

//Specify which operator to inform and the completion action.
//jb.OperatorToNetSend = "Test_Operator";
//jb.NetSendLevel = CompletionAction.Always;

jb.Create();

#endregion 创建作业

#region 作业步骤

JobStep jbstp = new JobStep(jb, "作业步骤");
//数据库
jbstp.DatabaseName = databaseName;
//计划执行的SQL命令
jbstp.Command = strSQl;
//成功时执行的操作
jbstp.OnSuccessAction = StepCompletionAction.QuitWithSuccess;
//失败时执行的操作
jbstp.OnFailAction = StepCompletionAction.QuitWithFailure;
//创建 SQL 代理实例的作业步骤.
jbstp.Create();

#endregion 作业步骤

#region 作业计划属性

JobSchedule jbsch = new JobSchedule(jb, "作业计划");

//计划频率,每几天一次
jbsch.FrequencyTypes = FrequencyTypes.Daily;
jbsch.FrequencyInterval = 1;

//每天一次,指定时间运行
jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Once;
jbsch.ActiveStartTimeOfDay = new TimeSpan(12, 0, 0);
//每天多次,每隔指定时间一次
//jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Hour;
//jbsch.FrequencySubDayInterval = 1;
//jbsch.ActiveStartTimeOfDay = new TimeSpan(0, 0, 0);
//jbsch.ActiveEndTimeOfDay = new TimeSpan(23, 59, 59);

//持续时间
if (startDate != null)
{ //开始时间
jbsch.ActiveStartDate = startDate;
}
else
{
jbsch.ActiveStartDate = DateTime.Now;
}
if (endDate != null)
{ //结束时间,null表示无结束日期
jbsch.ActiveEndDate = endDate;
}

//创建SQL代理实例的作业调度
jbsch.Create();

#endregion 作业计划属性
//返回作业GUID
return jb.JobID;
}
...全文
85 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧