假设你收到这样的消息
The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
然后,您首先需要 SQL Server 用来访问主机操作系统的代理用户。
- 设置代理用户
execute sp_xp_cmdshell_proxy_account 'DOMAIN\USER', 'PASSWORD'
在 SQL Server Management Studio 中,这应该如下所示:

- 确保 SQL 用户(不是代理用户)映射到主数据库
use [master]
go
execute sp_addrolemember 'public', SQLUSERNAME;
execute sp_addrolemember 'db_datareader', SQLUSERNAME;
execute sp_addrolemember 'db_datawriter', SQLUSERNAME;
在 SQL Server Management Studio 中,这应该如下所示:

- 授予执行权限,以便 SQL 用户可以使用代理访问操作系统功能
use [master]
go
grant execute on xp_cmdshell to SQLUSERNAME