我正在编写一个脚本,将Server备份文件的最后一组“好”复制到另一个驱动器(说来话长--我们使用供应商R1Soft进行备份,当我们谈到大约100万文件时,它将不允许我们排除文件夹)。
脚本背后的想法是:
我遇到的问题是,如果我手动运行代理作业,一切都会正常运行,但是当任务按计划运行时,它会在结束时执行复制部分,但不会执行初始的删除操作--所以所有旧文件都保留在驱动器上,必须手动删除。
日志中没有任何内容可以指示可能发生的事情(没有失败或错误消息)。我假设这是一个权限问题-代理作业在计划时运行的是哪个用户?也许是我登录的用户,因为它是手动运行时使用的?
要么是这样,要么是有更好的方法?我真的不想运行两次备份,因为大约有1TB的数据需要备份。
发布于 2016-04-14 18:55:14
用于运行作业的帐户将需要删除这些文件的权限。要测试您的进程,请以特定用户的身份登录,并与该用户一起测试您的工作--特别是删除文件。
尽管如此,我在清除Server备份时遇到了问题,所以我创建了这个CmdExec脚本。要删除文件并获取错误信息,请考虑将其作为作业步骤之一运行(应该/必须是CmdExec正确工作的一条线):
cmd /e:on /c "forfiles /p "c:\MYDATABASEBACKUPS" /s /m *.BAK /d -2 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&EXIT 1||EXIT 0"&exit %errorlevel%此脚本根据备份的天数清除备份。/d -2告诉脚本保留两天的价值。把2换成你想要保留的任何号码。
另外,将c:\MYDATABASEBACKUPS更改为备份位置。将*.BAK更改为备份文件的备份扩展名。这个脚本的“幻想”是因为我去掉了假阳性的“没有找到的文件”--因为有时候找不到文件。
祝你的脚本顺利!
https://dba.stackexchange.com/questions/135291
复制相似问题