最近遇见一个奇怪的现象,在做某系统的定期备份的时候使用到了非系统自带Rsync命令,但是手动启动没问题,而且又非常期望批量化在多台主机上进行,怎么办呢?Windows Server 2003下面这样执行任务计划没问题,而就Windows Server 2008 R2下面出现意外。
正常情况下我们的任务计划会有反馈数值,通过它可以判断这个任务计划上次是否运行正常(详细连接:http://support.microsoft.com/kb/267031/)。
・ 代码 0 或 0x0:操作成功完成。
・ 代码 1 或 0x1:调用的函数不正确或调用了未知函数。
・ 代码 10 或 0xa:环境不正确。
・ 代码 0x8009000f:常规访问被拒绝
Figure 1看到上次运行结果出现非0情况
这种非 情况表示的是不能被接受的。
通过对这个批处理设置断点,我看到了这样的报错信息。
Figure 2在批处理中加入Pause 进行断点,查看错误信息
很明显,这个rsync不是系统自带的程序和文件,因此无法被系统直接调用,猜测和环境变量有关,仔细寻找Windows Server 2008 R2 下面的任务计划选项,我看到了这个填空的地方。
Figure 3起始于(可选)项
我将这个填写成了该条脚本的所在的目录,再次运行该任务计划,得到返回成功的标记,并且在服务本分服务器端受到相应的备份内容。
这里回顾一下,两个版本操作系统的任务计划的不一样,Windows Server 2003 下面可以选择的内容,项目并不多,不过他默认的情况下会将起始于填写进去,使用的就是所在脚本的上一级目录。
Figure 4 Windows Server 2003 下面的起始于,默认被填写
因此设置Windows Server 2008 ,2012这样的基于Nt6核心的系统的任务计划的时候建议将起始于进行一下设置。
以下是其它网友提供的方法
第二种解决方法:
1、创建任务计划时,要在常规选项卡里选中“不管用户是否登录都要运行”、“使用最高权限运行”、配置选带有“Windows Server 2008 R2”这三个选项,
2、在操作选项卡里的“起始于(可选)”要填上bat批处理文件所在目录,windows 2003是在选择bat批处理文件自动带上的,而2008不会,虽然它提示是可选的,但是不填的话,执行会失败;
3、所有信息都填写完整后点确定时需要输入运行此任务的用户帐户密码;
第三种解决方法:
下面我贴一个完整的计划任务图示:
创建计划任务
定制计划任务执行时间
计划任务操作一(此情况符合单个可执行程序或者脚本不调用数据库情况下)
计划任务操作二(此情况符合运行程序需要调用目录数据库情况、PS:这个通吃吧貌似j
后面默认即可
其问题就在于编辑操作的选项里面的起始于(可选)选项。
真正问题找出来觉得很讽刺呢
贴这个帖子是想给大家一个出现问题有据可查的建议。哈哈,自己也能做个标记以防忘记。
第四种解决方法:
今天在Windows Server 2008 里新建了一个定时任务,通过定时任务执行的bat文件中的sql命令
新闻热点
疑难解答
图片精选