使用xp_cmdshell从SQL调用PsExec中的bash

时间:2009-07-26 23:12:06

标签: sql-server sql-server-2005 bash cygwin psexec

我正在尝试通过PsExec的用户帐户调用bash命令。正在使用Cygwin,我正在尝试从SQL运行命令:

exec master..xp_cmdshell 'psexec -u cyg_server -p <pwd> -accepteula "bash script.sh"';

但是,我从psexec收到以下错误:

  

访问被拒绝。

     

PsExec无法启动bash script.sh:

有什么建议吗?

我正在使用SQL 2005,Windows Server 2008和Cygwin以及新的二进制文件

1 个答案:

答案 0 :(得分:1)

您可能以SQL用户或没有该文件权限的用户身份运行此操作。我最好的选择是SQL用户(例如sa)。执行此操作时,它使用的Windows凭据属于服务帐户,默认情况下为SYSTEM,但如果您这样设置,则可能是其他内容。

如果您只是在SQL中调用它,请确保您实际上是以具有打开所有必需文件的权限的Windows用户身份运行。

如果这是在SQL Server代理作业中运行,则需要set up a Credential,然后set up a Proxy。完成后,您可以指定代理来运行作业(它是“作业步骤”对话框中的第三个或第四个下拉列表),它将使用正确的Windows凭据运行。