2017-01-23 89 views
0

我有一个非常基本的脚本,可以在本地PC上正常运行。它只是备份一些文件夹及其内容,然后在文件夹名称上添加日期标记。通过SQL Server运行Powershell作业

该脚本备份两个不同服务器上的文件夹(Server2 & Server3)。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned 

#Part 1 
Copy-Item -Path "\\Server3\Example Location" -Destination "\\Server3\Example Location_$(get-date -f yyyyMMdd)" -Recurse 

#Part 2 
Copy-Item -Path "\\Server2\Example Location" -Destination "\\Server2\Example Location_$(get-date -f yyyyMMdd)" -Recurse 

它完美地运行两个部分在下面的环境中:

  • 在我的本地PC
  • 当我远程连接到服务器2,右键点击>使用PowerShell
  • 运行当我远程连接到服务器2并编辑>运行脚本

但是,当我尝试自动执行此操作并创建一个SQL Se rver代理作业(再次,在服务器2上)只有第2部分实际备份。作业成功完成,但第1部分似乎被忽略(即在服务器2上运行,在服务器3上备份)。

任何想法为什么作为SQL作业运行会导致这种情况?

n.b.作业设置为以“SQL Server代理服务帐户”运行。

+0

您的服务代理帐户可能无法访问服务器3上的文件夹吗? –

+0

运行作业的用户...在\\ Server3上具有权限? – M84

回答

0

夫妇的事情...

如果您运行PS脚本阶梯型操作系统(CmdExec)则永远不会有一个错误信息返回给SQL-服务器工作。这就是说,如果您的SQL Server代理服务帐户无权访问\ Server3 ...文件夹,则副本将失败,并且如上所述,不会将错误消息传输到调用的SQL-代理作业。

相关问题