在SQL Server代理上找不到路径Powershell脚本

时间:2016-07-11 18:02:23

标签: powershell sql-server-2012 windows-server-2012-r2 sql-server-agent

我一直在搜索所有互联网和stackOF并解决此问题。 我正在尝试使用SQL Server代理自动执行数据库还原。 sql server代理作业包括四个步骤,其中3个是tsql,另一个是powershell脚本。

我创建了一个具有管理员凭据的代理,以便脚本可以作为管理员运行。

    cd c:;
$backuppath="Microsoft.PowerShell.Core\FileSystem::\\sharedcomputer\backup";
$destpath="c:\tmp\";
get-childitem -path $backuppath | where-object { -not $_.PSIsContainer } |

    sort-object -Property $_.CreationTime |

    select-object -last 1 | copy-item -Destination (join-path $destpath "byte.BAK");

它从源共享文件夹中复制.bak文件并将其放入目标上的tmp文件夹中。 每当我通过常规Powershell运行它时,它运行正常。 每当我尝试从SQL Server代理运行此命令时,都会收到一条错误消息,指出它无法找到路径。

我甚至尝试使用net use来传递共享文件夹的凭据。我认为这与文件夹需要凭据这一事实有关。

我已经在源服务器上关闭了密码文件共享,但出于某种原因,当我使用Windows资源管理器找到共享文件时,它仍然首先要求提供凭据。一旦保存并缓存,我就可以使用powershell来访问该文件夹。但是当它从sql server agent

执行时,这一切都不起作用

1 个答案:

答案 0 :(得分:0)

我终于在Windows Server的帮助下得到了一些帮助...... 回过头来回答这个问题。当我创建委托代理时,我使用了与当前域帐户关联的凭据,即Domain \ Administrator。

为了让代理连接到远程服务器,它需要在该域上拥有凭据。 所以我所做的是使用相同的名称和密码在我的目标和源服务器上创建另一个域帐户,并赋予它对我需要的文件夹的权限

该帐户在代理中使用,凭据设置为。\ AccountName,因为通配符已就位,代理能够在两台服务器之间跳回并成功传输文件....

希望这有帮助