SP с xp_cmdshell выдает ошибку в MessageQueue, но успешно выполняется в SSMS

У меня есть SP, который вызывает xp_cmdshell в нем. Этот SP используется в MessageQueue.

Службы сервера SQL и агента настраиваются с использованием учетной записи службы домена, и эта учетная запись службы также имеет имя входа под ролью сервера sysadmin.

Когда вызывается MessageQueue, SP возвращает следующее исключение: Информация учетной записи прокси-сервера xp_cmdshell не может быть получена или недействительна. Убедитесь, что учетные данные '##xp_cmdshell_proxy_account##' существуют и содержат действительную информацию.

Но когда я выполняю SP в SSSMS, под учетной записью службы (которая является системным администратором), он успешно выполняется.

Я даже создал учетные данные ## 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"

Я использую SQL Server 2008 R2 Sp2 на компьютере под управлением Windows Server 2008 R2 Enterprise.

Пожалуйста, дайте мне знать, что мне здесь не хватает.

1 ответ

Я сделал TRUSTWORTHY = ON в базе данных и SP без проблем выполнил очередь сообщений.

Спасибо Ремусу Русану за чаевые!!

Другие вопросы по тегам