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 без проблем выполнил очередь сообщений.
Спасибо Ремусу Русану за чаевые!!