Пример #1
0
        /// <summary>
        /// 获取命令行
        /// </summary>
        /// <param name="vSchedulerEmailBackupObj">vSchedulerEmailBackup对象</param>
        /// <param name="KeyId">主键值</param>
        /// <returns></returns>
        public string GetJobCommandString(vSchedulerEmailBackup vSchedulerEmailBackupObj, string KeyId, Job jb)
        {
            string     JobCommandString = string.Empty;
            UTPCommand comm             = new UTPCommand();

            try
            {
                //获取UTP命令行
                comm = this.UTPCommands(vSchedulerEmailBackupObj, jb);

                //UTP命令赋值
                UTPCommandBuilder builder = new UTPCommandBuilder(comm);
                JobCommandString = builder.JobCommandString;

                //删除数据
                this.LogicDelete(KeyId);

                //插入数据
                this.InsertCommand(builder, KeyId);
                return(JobCommandString);
            }
            catch (Exception)
            {
                return("");
            }
        }
Пример #2
0
        public UTPCommand UTPCommands(vSchedulerEmailBackup vSchedulerEmailBackupObj, Job jb)
        {
            UTPCommand comm = new UTPCommand();

            //操作类型
            switch (vSchedulerEmailBackupObj.Action)
            {
            case "Billing":
                comm.ActiveType = ActionType.Billing;
                break;
            }

            //自动计算用量
            switch (vSchedulerEmailBackupObj.Calc)
            {
            case "True":
                comm.AutoCalc = CalcUsageBeforeBillingRegister.Yes;
                break;

            case "False":
                comm.AutoCalc = CalcUsageBeforeBillingRegister.No;
                break;
            }

            //公司标识
            comm.Company = vSchedulerEmailBackupObj.Company;

            //算费周期范围
            comm.Cycle = vSchedulerEmailBackupObj.Cycle;

            //镜像复制
            switch (vSchedulerEmailBackupObj.Copy)
            {
            case "True":
                comm.ShadowCopies = BillingShadowCopies.Yes;
                break;

            case "False":
                comm.ShadowCopies = BillingShadowCopies.No;
                break;
            }

            //账户状态
            if (vSchedulerEmailBackupObj.Status != "All")
            {
                comm.Status = vSchedulerEmailBackupObj.Status;
            }
            //日志
            switch (vSchedulerEmailBackupObj.Trace)
            {
            case "True":
                comm.Trace = Trace.Yes;
                break;

            case "False":
                comm.Trace = Trace.Yes;
                break;
            }

            //日志数据库连接字符串
            comm.TraceDBConnectionString = vSchedulerEmailBackupObj.TraceTable;

            //日志文件保存路径
            //comm.TraceFilePath=vSchedulerEmailBackupObj.trace

            //日志类型
            switch (vSchedulerEmailBackupObj.TraceType)
            {
            case "File":
                comm.TraceType = TraceType.File;
                break;

            case "Table":
                comm.TraceType = TraceType.Table;
                break;

            case "None":
                comm.TraceType = TraceType.None;
                break;
            }

            //口令
            comm.UTPPassword = vSchedulerEmailBackupObj.UTPPwd;

            //用户名
            comm.UTPUsername = vSchedulerEmailBackupObj.UTPUser;

            //计划标识
            comm.GUID = vSchedulerEmailBackupObj.ScheduleID.ToString();

            //UTP程序路径,保存了UTP EXE文件所在的应用程序路径,此属性值要求包含Utility.exe的全路径。
            comm.UTPPath = "*" + this.GetConfig("UTPPath") + "*";

            //计划标识符
            comm.SID = vSchedulerEmailBackupObj.ScheduleID;


            return(comm);
        }
Пример #3
0
        /// <summary>
        /// 创建包含步骤和计划的作业,返回 string  jobid
        /// </summary>
        /// <param name="KeyId">对象ID</param>
        /// <returns>返回 string</returns>

        public string CreateBilling(string KeyId, string JobType, string KillJobID)
        {
            try
            {
                #region 定义变量

                //数据库名称
                string strDatabaseName = string.Empty;

                //作业名称
                string strJobName = string.Empty;

                //作业ID
                string strJobID = string.Empty;

                //作业说明
                string strDescription = string.Empty;

                //开始时间
                DateTime dtStartDate = System.DateTime.Now;

                //计划频率,Daily:每天、Weekly:每周、Monthly:每月、Run Once:只运行一次
                FrequencyTypes FrequencyType = FrequencyTypes.Daily;

                //开始运行时间 如:10:30:00
                string strRunStartDate = string.Empty;

                //结束运行时间,如:11:05:00
                string strRunEndDate = string.Empty;

                //数据库服务名
                string strSQLServer = string.Empty;

                //数据库登录用户
                string strUser = string.Empty;

                //数据库登录密码
                string strPassword = string.Empty;

                //时
                int hours = 0;

                //分
                int minutes = 0;

                //秒
                int seconds = 0;

                //命令行
                string JobCommandString = string.Empty;
                vSchedulerEmailBackup vSchedulerEmailBackupObj = null;

                #endregion

                //返回vSchedulerEmailBackup 对象,根据id查询
                vSchedulerEmailBackupObj = this.FindvSchedulerEmailBackupById(KeyId);
                if (vSchedulerEmailBackupObj != null)
                {
                    #region 变量赋值

                    //strDatabaseName = "ServiceDirectDB";
                    strDatabaseName = this.GetConfig("strDatabaseName");
                    strJobName      = vSchedulerEmailBackupObj.TaskName;
                    if (vSchedulerEmailBackupObj.JobID != null)
                    {
                        strJobID = vSchedulerEmailBackupObj.JobID.ToString();
                    }
                    //描述:保存的是KillJob的ID
                    strDescription = KillJobID;
                    dtStartDate    = Convert.ToDateTime(vSchedulerEmailBackupObj.StartTime);
                    switch (vSchedulerEmailBackupObj.ScheduleType)
                    {
                    case "Daily":
                        FrequencyType = FrequencyTypes.Daily;
                        break;

                    case "Run Once":
                        FrequencyType = FrequencyTypes.OneTime;
                        break;
                    }
                    DateTime dtRunOnlyStart = Convert.ToDateTime(vSchedulerEmailBackupObj.RunOnlyStart);
                    DateTime dtRunOnlyEnd   = Convert.ToDateTime(vSchedulerEmailBackupObj.RunOnlyEnd);
                    strRunStartDate = dtRunOnlyStart.ToLongTimeString();
                    strRunEndDate   = dtRunOnlyEnd.ToLongTimeString();

                    //开始运行时间 时:分:秒:
                    hours   = dtRunOnlyStart.Hour;
                    minutes = dtRunOnlyStart.Minute;
                    seconds = dtRunOnlyStart.Second;

                    //获取自定义config的值
                    strSQLServer = this.GetConfig("strSQLServer");
                    strUser      = this.GetConfig("strUser");
                    strPassword  = this.GetConfig("strPassword");
                    #endregion
                    #region 创建作业

                    ServiceDirectDBEntities objDB = new ServiceDirectDBEntities();

                    //获取数据库名
                    string strdatabase = objDB.Connection.Database;

                    //获取数据库服务器名
                    string           strDataSource = objDB.Connection.DataSource;
                    ServerConnection conn          = null;
                    Server           myServer      = null;
                    conn     = new ServerConnection(strSQLServer, strUser, strPassword);
                    myServer = new Server(conn);

                    //调用删除Billing 的Job
                    //DeleteJob(strJobID);

                    Job jb = new Job(myServer.JobServer, strJobName);
                    jb.Description = strDescription;

                    //更改JOB状态
                    if (JobType == "enable")
                    {
                        jb.IsEnabled = true;
                    }
                    switch (JobType)
                    {
                    case "enable":
                        jb.IsEnabled = true;
                        break;

                    case "disable":
                        jb.IsEnabled = false;
                        break;

                    case "Insert":
                        jb.IsEnabled = true;
                        break;
                    }

                    //创建JOB
                    jb.Create();
                    #endregion 创建作业


                    if (jb.JobID != null)
                    {
                        //获取命令行
                        JobCommandString = this.GetJobCommandString(vSchedulerEmailBackupObj, KeyId, jb);
                    }

                    #region 作业步骤

                    Steps steps = new Steps();

                    //创建步骤
                    steps.CreateStep(jb, strDatabaseName, JobCommandString, strRunEndDate);

                    #endregion 作业步骤

                    #region 作业计划属性

                    JobSchedule jbsch = new JobSchedule(jb, "ScheduleBilling");

                    //计划频率,每几天一次
                    jbsch.FrequencyTypes = FrequencyType;
                    if (vSchedulerEmailBackupObj.ScheduleType.Equals("Daily"))
                    {
                        //执行间隔 (天)
                        jbsch.FrequencyInterval = 1;

                        //当天只执行一次
                        jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Once;
                    }
                    if (strRunStartDate != string.Empty)
                    {
                        //开始执行时间
                        jbsch.ActiveStartTimeOfDay = new TimeSpan(hours, minutes, seconds);
                    }

                    //持续时间
                    if (dtStartDate != null)
                    {
                        //开始时间
                        jbsch.ActiveStartDate = dtStartDate;
                    }
                    else
                    {
                        jbsch.ActiveStartDate = DateTime.Now;
                    }

                    //创建SQL代理实例的作业调度
                    jbsch.Create();
                    jb.ApplyToTargetServer(myServer.JobServer.Name);

                    //创建成功后立刻执行一次开始
                    //jb.Start();

                    //创建成功后立刻执行一次结束
                    #endregion 作业计划属性

                    //返回作业GUID
                    return(jb.JobID.ToString());
                }
                else
                {
                    return("");
                }
            }
            catch (Exception)
            {
                return("");
            }
        }