Pro*_*eur 4 sql-server-2008 sql-server remote xp-cmdshell
我正在执行以下命令以从 SQL Server 中的存储过程中停止远程服务器上的服务。
----------------
-- Stop Service
----------------
SET @Command = 'sc \\' + @Server + ' stop ' + @ServiceName;
EXEC master.dbo.xp_cmdshell @Command;
Run Code Online (Sandbox Code Playgroud)
根据服务,有时这会成功执行,但有时我会收到以下错误:
[SC] OpenService FAILED 5:
NULL
Access is denied.
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
我很好奇什么用户执行命令。是我登录/连接到数据库的用户吗?或者是我登录物理服务器的用户?我可以通过不同的身份验证xp_cmdshell吗?
来自产品文档中的xp_cmdshell (Transact-SQL):
xp_cmdshell生成的 Windows 进程与 SQL Server 服务帐户具有相同的安全权限。
当它由不是sysadmin固定服务器角色成员的用户调用时,xp_cmdshell使用存储在名为##xp_cmdshell_proxy_account##的凭据中的帐户名和密码连接到 Windows 。如果此代理凭据不存在,xp_cmdshell 将失败。
有关设置xp_cmdshell代理帐户所需的步骤,请参阅完整条目。
| 归档时间: |
|
| 查看次数: |
3647 次 |
| 最近记录: |