如何解决SQL Server作业中的Robocopy sqlcmd模式没有错误返回
我有一个包含多个步骤的SQL Server代理作业,包括备份本地服务器上的数据库。在工作结束时,我有一个步骤将本地文件夹的所有.bak复制到网络上的另一个文件夹中。此步骤为“操作系统(CmdExec)”类型,代码如下:
sqlcmd -v SourcePath ="D:\BACKUPS\SQL_NIGHT-MAINTENANCE\" DestinationPath ="\\Serveur1\Site\Backups\" -i D:\BACKUPS\Script_Copy_Files_BAK_Network.sql -b -V 1
SQL脚本“ Script_Copy_Files_BAK_Network.sql”仅包含ROBOCOPY
命令:
!!ROBOCOPY $(SourcePath) $(DestinationPath)\ *.bak* /PURGE
似乎一台服务器上有问题,因为.bak尚未复制到目标文件夹中,并且多余的文件也未删除。但是我在工作经历中没有任何错误。消息显示“该步骤未生成任何输出。进程退出代码0。该步骤成功。”。 我不知道为什么它不起作用以及为什么我没有收到任何错误? 我尝试使用-b和-V选项,但未进行任何更改。
在获取错误的测试过程中,我试图通过在sqlcmd行中提供错误的DestinationPath(路径中带有空格)来故意创建错误。该作业没有返回任何错误,并且我得到了相同的结果:“该步骤未生成任何输出。进程退出代码0。该步骤成功。”。
我也尝试在sqlcmd模式下的SSMS中手动执行ROBOCOPY
命令并打印ERRORLEVEL
,但返回0:
:SETVAR SourcePath "D:\BACKUPS\SQL_NIGHT-MAINTENANCE\"
:SETVAR DestinationPath "\\Serveur1\Site\Backups test\"
!!ROBOCOPY $(SourcePath) $(DestinationPath)\ *.bak* /PURGE
!!echo %ERRORLEVEL%
!!If %ERRORLEVEL% LSS 1 Echo There were NO errors in the data copy for drive
返回邮件:
> ----------------------------------------------------- ROBOCOPY ::
>Robust File Copy for Windows
>
>
> Started : 01 November 2020 09:17:29
> Source - D:\BACKUPS\SQL_NIGHT-MAINTENANCE\
> Dest - \\Serveur1\Site\Backups\
>
> Files : Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30
>
> ------------------------------------------------------------------------------
>
> ERROR : Invalid Parameter #3 : "test\\"
>
> Simple Usage :: ROBOCOPY source destination /MIR
>
> source :: Source Directory (drive:\path or \\server\share\path).
> destination :: Destination Dir (drive:\path or \\server\share\path).
> /MIR :: Mirror a complete directory tree.
>
> For more usage information run ROBOCOPY /?
>
>
> **** /MIR can DELETE files as well as copy them !
>
>0
>
>There were NO errors in the data copy for drive
也许我的测试与我的问题无关,但是我想得到一个适当的错误,并且在ROBOCOPY
由于某种原因没有复制所有.bak的情况下失败。
有人帮忙吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。