我想做的是使用C#计划SSIS程序包。缺少的部分是,如何告诉代理该计划是针对SSIS包“ X”的,这是我的代码:
Server srv = new Server();
//Define an Operator object variable by supplying the Agent (parent JobServer object) and the name in the constructor.
Operator op = new Operator(srv.JobServer, "AC_Operator") { NetSendAddress = "Network1_PC" };
//Create the operator on the instance of SQL Server Agent.
op.Create();
//Define a Job object variable by supplying the Agent and the name arguments in the constructor and setting properties.
Job jb = new Job(srv.JobServer, "AC_Job");
//Specify which operator to inform and the completion action.
jb.OperatorToNetSend = "AC_Operator";
jb.NetSendLevel = CompletionAction.Always;
//Create the job on the instance of SQL Server Agent.
jb.Create();
//Define a JobStep object variable by supplying the parent job and name arguments in the constructor.
JobStep jbstp = new JobStep(jb, "AC_Job_Step");
jbstp.OnSuccessAction = StepCompletionAction.QuitWithSuccess;
jbstp.OnFailAction = StepCompletionAction.QuitWithFailure;
//Create the job step on the instance of SQL Agent.
jbstp.Create();
//Define a JobSchedule object variable by supplying the parent job and name arguments in the constructor.
JobSchedule jbsch = new JobSchedule(jb, "AC_Job_Schedule");
//Set properties to define the schedule frequency, and duration.
jbsch.FrequencyTypes = FrequencyTypes.Daily;
jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Minute;
jbsch.FrequencySubDayInterval = 30;
TimeSpan ts1 = new TimeSpan(9, 0, 0);
jbsch.ActiveStartTimeOfDay = ts1;
TimeSpan ts2 = new TimeSpan(17, 0, 0);
jbsch.ActiveEndTimeOfDay = ts2;
jbsch.FrequencyInterval = 1;
DateTime d = new DateTime(2003, 1, 1);
jbsch.ActiveStartDate = d;
//Create the job schedule on the instance of SQL Agent.
jbsch.Create();
谢谢你的时间。
最佳答案
您需要做的是设置作业步骤的SubSystem,然后构建您的Command。在将.NET生成的代码与SQL Agent创建的作业进行比较时,我注意到的唯一区别是DatabaseName属性的分配,因此我也进行了设置。
毫无疑问,您还将希望查看dtexec以了解如何配置和调用程序包,或者可以像我一样作弊,并使用dtexecui或Agent构建SET和其他命令,然后将其粘贴为源命令。
//Define a JobStep object variable by supplying the parent job and name arguments in the constructor.
JobStep jbstp = new JobStep(jb, "AC_Job_Step");
jbstp.OnSuccessAction = StepCompletionAction.QuitWithSuccess;
jbstp.OnFailAction = StepCompletionAction.QuitWithFailure;
string command = string.Empty;
command = @"/FILE ""C:\sandbox\SSISHackAndSlash2008\SSISHackAndSlash2008\EzAPI_Recipe01.dtsx"" /CHECKPOINTING OFF /REPORTING E";
jbstp.SubSystem = AgentSubSystem.Ssis;
jbstp.DatabaseName = "master";
jbstp.Command = command;
//Create the job step on the instance of SQL Agent.
jbstp.Create();
关于c# - 使用C#计划SSIS程序包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9553953/