通过SQL Server作业运行Powershell

时间:2017-01-23 16:18:05

标签: sql sql-server powershell database-administration

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

该脚本备份两个不同服务器(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

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

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

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

为什么作为SQL作业运行的任何想法会导致这个?

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

1 个答案:

答案 0 :(得分:0)

情侣......

如果您将PS脚本作为步骤类型操作系统(CmdExec)运行,那么将永远不会有错误消息返回到SQL-Server作业。

话虽如此,如果您的SQL-Server代理服务帐户无法访问\ Server3 ...文件夹,则副本将失败,如上所述,不会将错误消息传输到调用SQL-Agent工作