我有一个 SP,它调用xp_cmdshell
它。此 SP 正在 MessageQueue 中使用。
SQL 服务器和代理服务使用域服务帐户进行配置,并且该服务帐户在 sysadmin 服务器角色下也有登录名。
当调用MessageQueue时,SP返回以下异常:
无法检索 xp_cmdshell 代理帐户信息或该信息无效。请验证“##xp_cmdshell_proxy_account##”凭据是否存在且包含有效信息。
但是当我在 SSSMS 中以服务帐户登录(即 sysadmin)执行 SP 时,它成功执行。
我甚至创建了##xp_cmdshell_proxy_account##
凭证,但消息队列始终出现这个错误。
队列如下所示:
CREATE QUEUE [dbo].[TestxmCmdshellQueue]
WITH STATUS = ON ,
RETENTION = OFF ,
ACTIVATION ( STATUS = ON ,
PROCEDURE_NAME = [dbo].[SpWithxp_cmdshell_Init] ,
MAX_QUEUE_READERS = 5 ,
EXECUTE AS N'dbo' ),
POISON_MESSAGE_HANDLING (STATUS = OFF)
服务帐户在本地服务器中也配置为本地管理员。
数据库所有者是“Sa”
我在 Windows Server 2008 R2 Enterprise Machine 上运行 SQL Server 2008 R2 Sp2。
答案1
我在数据库中将 TRUSTWORTHY 设置为 ON,并且 SP 通过消息队列顺利执行。
谢谢 !!