使用EXECUTE AS的存储过程无法运行xp_cmdshell

时间:2013-05-27 10:28:44

标签: sql-server-2008 impersonation xp-cmdshell

我有一个sql server用户, proxyAccount ,我将其配置为xp_cmdshell_proxy_account

在存储过程中,我使用xp_cmdshell,当我使用此帐户执行存储过程时,一切正常。

但是,如果我添加:

WITH EXECUTE AS 'proxyAccount'

到存储过程,执行时出现以下错误:

  

无法检索xp_cmdshell代理帐户信息或该信息无效。验证'## xp_cmdshell_proxy_account ##'凭证是否存在且包含有效信息。

可能是什么问题?为什么 proxyAccount 在设置为EXECUTE AS时无法运行xp_cmdshell,但能够以其他方式运行它?

1 个答案:

答案 0 :(得分:0)

通过以下步骤解决了问题:

  1. 创建使用Windows身份验证(不使用SQL Server身份验证)的新帐户
  2. 将此新帐户设置为xp_cmdshell proxy
  3. 向旧的 proxyAccount
  4. 授予xp_cmdshell权限