如何在SQL Server代理作业中将数据库备份文件复制到另一台服务器

时间:2018-11-27 17:19:26

标签: sql-server copy sql-server-agent

我意识到我可能缺少一些简单的东西,但我无法弄清楚。

如果我在目标服务器上的批处理文件中使用以下“复制”命令,则它可以正常工作。但是,如果在执行备份的SQL Server代理作业的某个步骤中添加了它,则会收到语法错误。那么,我在做什么错呢?似乎它可能卡在了“ / y”参数的“ /”上,但是我确实希望它覆盖现有文件。

copy /y "\\DBServer\c$\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\db_daily.bak" "\\DESTINATION\\db\db_daily.bak"

错误是:

Incorrect syntax near '/'.  [SQLSTATE 42000] (Error 102).  The step failed.

我完全删除了/ y并尝试了所有我能想到的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

确保将您的步骤创建为“操作系统(Cmd Exec)类型,而不是事务sql。”

或使用XP xp_cmdshell

   exec xp_cmdshell 'copy /y "\\DBServer\c$\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\db_daily.bak" "\\DESTINATION\\db\db_daily.bak"' 

请注意,您可能需要启用xp_cmdshell。