Я пытаюсь создать хранимую процедуру, которая создает задание, выполняет программный шаг и запускает его. Это работает, но мне также нужно выдать себя за пользователя, поскольку у конечного пользователя не будет разрешения на это.
Я создал тестового пользователя (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, включенной в объявление процедуры.
Кто-нибудь знает почему это так, и что я могу сделать, чтобы обойти это?