复制文件作业创建

我需要每天将备份文件从服务器复制到共享中。其实我需要创造一份工作来每天都这样做。我创建了一个bat文件来完成它。问题是我不知道如何让它在工作中运行。有没有其他方法可以做到这一点。 请提出建议。我真的很感激。 谢谢

已邀请:

paut

赞同来自:

如果您只需要运行批处理脚本set up a Windows scheduled task就可以了。

vomnis

赞同来自:

您可以使用两个命令:at.exe或schtasks.exe at.exe更易于使用,但不够灵活。 article here谈论你想要做的事。 schtasks.exe是Windows计划任务的命令行版本。你可以在这里找到更多的信息:http://msdn.microsoft.com/en-us/library/bb736357(VS.85).aspx at.exe的粒度要小得多。它每天只能运行一次工作。 schtasks.exe更复杂,但它非常非常灵活。您可以安排一份工作每N分钟重复一次,等等。 例如,如果你想每5分钟备份一次(比如说热备份数据库):

schtasks.exe /Create /ST 00:00 /SC MINUTE /MO 5 /RU SYSTEM /TN DatabaseBackup /TR "backup_db.bat" /F

lsunt

赞同来自:

问题1:你什么时候需要复制备份文件?问题2:您如何知道在您想要执行复制时备份已完成? 为了避免尝试复制尚未完成的备份文件,我将创建创建备份的过程的复制部分(逻辑为“IF(备份成功)THEN(复制文件)ELSE(发送恐慌邮件) 。你可以设置一个不同的时间表(r),但是你有可能发生时间同步问题 - 你现在必须解决的问题将会适用于接下来的N个星期,几个月或者几年,还有一些事情(比如作为数据库大小)往往会在更长的时间内以不可预知的方式发生变化。 如果(例如)数据库备份是由SQL代理作业生成的,那么在做备份来复制文件之后,您要做的是向作业添加一个步骤 - 在这种情况下,要调用您的批处理文件。有很多方法可以做到这一点,而且他们都有一点参与,所以我只提供一些亮点:   - 添加第二个作业步骤,作业步骤类型为“操作系统(CmdExec)”;在这里,调用批处理文件   - 添加第二个作业步骤,作业步骤类型“Transact-SQL脚本(T-SQL)”,并使用xp_cmdshell调用您的批处理文件   - 添加第二个T-SQL步骤,它调用一个过程,该过程通过xp_cmdshell发送出去,并且可以根据需要做其他事情。 这里最大的问题将是安全性:运行SQL Agent的帐户是否有足够权限访问文件和文件夹,是否要启用xp_cmdexec,如何启用SQL Agent代理帐户......它可以快速复杂化,具体取决于您的环境已配置,您希望安全性有多紧张。当你继续前进时要小心!

xsint

赞同来自:

我同意Philip的使用SQL Agent。 由于我不想对其他帖子发表两条不同的评论,因此我会以答案的形式发布。 将OS调度(at,schtask)与SQL操作混合存在问题。它使管理和故障排除不必要的困难。在发生故障转移(集群或镜像)时,OS调度程序不会遵循SQL。他们不参与系统备份和恢复策略。他们有一个单独的管理工具集,这意味着管理员必须知道寻找他们。搜索依赖关系时未找到它们。等等等等。 由于SQL Server带有如代理这样丰富的作业调度工具,它已经存在了一段时间,并且围绕着我们的知识如此丰富,真的没有理由转向at.exe和它的亲戚表弟。 操作系统调度程序甚至值得考虑的唯一地方是代理不可用时:快速部署。对他们来说,我更喜欢使用timers,因为它们被保存在数据库中,因此它们在备份/恢复方案中表现更好,但我承认操作系统调度器也是有效的选择。同样,只适用于Express。

funde

赞同来自:

我曾尝试使用代理作业复制到共享。 我使用净使用,以确保当前上下文有映射的驱动器,然后我xcopy文件到该共享。 当我手动启动作业时,它表示它开始,但从未完成。数据量是10分钟就足够了。我没有看到代理日志中的任何进度指示器。任何想法,我可以看看发生了什么。 使用时间戳作为指示,我相信NO文件正在被复制。 Hmmmm .... 有什么想法吗? 格雷格

要回复问题请先登录注册