Sql-Server
通過 xp_cmdshell 執行命令時,哪個使用者向系統發出命令?
我正在執行以下命令以從 SQL Server 的儲存過程中停止遠端伺服器上的服務。
---------------- -- Stop Service ---------------- SET @Command = 'sc \\' + @Server + ' stop ' + @ServiceName; EXEC master.dbo.xp_cmdshell @Command;
根據服務,有時這會成功執行,但有時我會收到以下錯誤:
[SC] OpenService FAILED 5: NULL Access is denied. NULL NULL
我很好奇是什麼使用者執行了命令。是我登錄/連接到數據庫的使用者嗎?或者是我登錄到物理伺服器的使用者?我可以通過不同的身份驗證
xp_cmdshell
嗎?
來自產品文件中的xp_cmdshell (Transact-SQL) :
xp_cmdshell生成的 Windows 程序與 SQL Server 服務帳戶具有相同的安全權限。
當不是sysadmin固定伺服器角色成員的使用者呼叫它時,xp_cmdshell使用儲存在名為**##xp_cmdshell_proxy_account##**的憑據中的帳戶名和密碼連接到 Windows 。如果此代理憑據不存在,xp_cmdshell 將失敗。
有關設置
xp_cmdshell
代理帳戶所需執行的步驟,請參閱完整條目。