Ошибка доступа запрещена при запуске задания в агенте SQL Server

Я пытаюсь заставить агент SQL Server запускать программу с аргументами (как шаг задания CmdExec операционной системы), но каждый раз, когда он запускает задание, я получаю следующую ошибку: Процесс не может быть создан для шага 1 задания, причина: В доступе отказано).

Исследование, которое я провел в Интернете, показало, что это может быть проблема с разрешениями. Я настроил новую учетную запись пользователя в Windows и дал ей полные права доступа к программе, которую я хотел запустить, затем сопоставил этот профиль пользователя с профилем SQLSERVERAGENT в MS SQL, но я все еще получаю эту ошибку.

Любая помощь с этим будет оценена.

6 ответов

Вышеуказанные шаги работали для меня

Enable XP_cmdshell
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

Создать учетные данные

CREATE CREDENTIAL cmdshell_agent WITH IDENTITY = 'account_name', SECRET = 'password';
GO

Создать прокси

USE [msdb]
GO
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'tst_Proxy',@credential_name=N'cmdshell_agent', @enabled=1
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'tst_Proxy', @subsystem_id=3
GO

После этого используйте tst_proxy в задании агента sql для запуска задания. Работа прошла успешно

У меня была та же проблема, и решение было смущающе простым: мой путь к.exe был отключен. Это немного сбивает с толку, что это отражается как ошибка "Отказано в доступе" (потому что учетная запись агента на самом деле не знает, что файл не существует, просто он не может получить доступ к такому файлу).

Один простой шаг, который вы можете предпринять при поиске и устранении неисправностей, - это выполнить точную команду в командном окне. Это работает как ожидалось? Как насчет того, чтобы войти в систему с использованием учетной записи агента?

Сначала вам нужно убедиться, что XP_CMDSHELL разрешен.

exec sp_configure 'xp_cmdshell',1
go
reconfigure
  1. Вам нужно будет создать учетные данные с пользователем, которого вы создали.
  2. Создайте прокси-сервер, ссылающийся на учетные данные, которые вы создали. Предоставьте этому прокси-серверу доступ к подсистеме "Операционная система (CmdExec)".
  3. В самом шаге задания убедитесь, что он работает как этот прокси (Запуск от имени:).

Получил то же сообщение об ошибке. Оказалось, что для учетной записи агента SQL не было разрешений в каталоге Tools, где находится файл sqlcmd.exe. Предоставил разрешения на чтение и выполнение учетной записи агента SQL, проблема решена.

Если вы столкнулись с этой проблемой с планами обслуживания SQL 2014, даже если учетная запись запуска от имени и учетные записи служб в порядке (что подтверждено в ходе тестирования EXECUTE AS), попробуйте следующее:

Проверьте аутентификацию локального подключения в плане обслуживания.

  • если он настроен на учетную запись и это уместно, переключитесь на проверку подлинности Windows NT, сохраните план
  • если он уже находится в WinNT, переключитесь на учетную запись, сохраните план, вернитесь, переключитесь на проверку подлинности Windows NT, снова сохраните план.

Нигде не было регистрации, которая могла бы это поймать. Я просто думал, где еще может быть задействована аутентификация, так как сбои были вокруг этого, но везде все было настроено правильно....

Как говорила бабушка: «Это всегда в последнюю очередь». 

Нам необходимо убедиться, что учетная запись, через которую выполняется задание, имеет полный доступ к папкам / документам, участвующим в этапах задания.

Это должно решить проблему без добавления прокси.

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