Выполнить как не олицетворяя разрешения при попытке программно создать задания агента сервера sql - PullRequest
0 голосов
/ 27 января 2020

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

Я создал тестового пользователя (sa2) и дал ему разрешения, и я могу нормально выполнить свою процедуру , Если я добавляю строку WOTJ EXECUTE AS 'sa2' (или владельца) и запускаю ту же процедуру, когда все еще вошел в систему как sa2, я получаю следующие ошибки:

Msg 229, Уровень 14, Состояние 5, Процедура msdb..sp_add_job, строка 1 [Пакетная строка запуска 2] Отказано в разрешении EXECUTE для объекта 'sp_add_job', базы данных 'msdb', схемы 'dbo'. Сообщение 229, Уровень 14, Состояние 5, Процедура msdb..sp_add_jobstep, Строка 1 [Стартовая Строка 2] В разрешении EXECUTE было отказано для объекта 'sp_add_jobstep', базы данных 'msdb', схемы 'dbo'. Сообщение 229, Уровень 14, Состояние 5, Процедура msdb..sp_add_jobserver, Строка 1 [Стартовая Строка 2] Отказано в разрешении EXECUTE для объекта 'sp_add_jobserver', базы данных 'msdb', схемы 'dbo'. Сообщение 229, Уровень 14, Состояние 5, Процедура msdb..sp_start_job, Строка 1 [Стартовая Строка 2] Разрешение EXECUTE было отклонено для объекта 'sp_start_job', база данных 'msdb', схема 'dbo'.

Моя конечная цель - заставить это работать для другого пользователя, но кажется странным, что я могу «сделать это, выполнив вход в систему как sa2 со строкой EXECUTE AS, включенной в объявление процедуры.

Кто-нибудь знает почему это так, и что я могу сделать, чтобы обойти это?

1 Ответ

0 голосов
/ 28 января 2020

Спасибо за помощь. Ответ был во втором посте Дэвида Брауна Второе решение (6.3) помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...