Выполнить как не олицетворять разрешения при попытке программно создать задания агента sql server
Я пытаюсь создать хранимую процедуру, которая программно создает задание и шаг и запускает его. Это работает, но мне также нужно выдать себя за пользователя, поскольку у конечного пользователя не будет на это разрешения.
Я создал тестового пользователя (sa2) и дал ему разрешения, и я могу нормально выполнить свою процедуру. Если я добавлю строку WOTJ EXECUTE AS 'sa2' (или владелец) и выполню ту же процедуру, пока все еще вошел в систему как sa2, я получаю следующие ошибки:
Msg 229, уровень 14, состояние 5, процедура msdb..sp_add_job, строка 1 [Batch Start Line 2] В разрешении EXECUTE было отказано для объекта sp_add_job, базы данных msdb, схемы dbo. Msg 229, уровень 14, состояние 5, процедура msdb..sp_add_jobstep, строка 1 [Batch Start Line 2] В разрешении EXECUTE было отказано для объекта sp_add_jobstep, базы данных msdb, схемы dbo. Msg 229, уровень 14, состояние 5, процедура msdb..sp_add_jobserver, строка 1 [Batch Start Line 2] В разрешении EXECUTE было отказано для объекта sp_add_jobserver, база данных msdb, схема dbo. Msg 229, уровень 14, состояние 5, процедура msdb..sp_start_job, строка 1 [Batch Start Line 2] В разрешении EXECUTE было отказано для объекта sp_start_job, базы данных msdb, схемы dbo.
Моя конечная цель - заставить это работать для другого пользователя, но кажется странным, что я могу сделать это, войдя в систему как sa2, со строкой EXECUTE AS, включенной в объявление процедуры.
Кто-нибудь знает, почему это так, и что я могу сделать, чтобы обойти это?
1 ответ
Спасибо за помощь. Ответ был во втором посте Дэвида Брауна. Второе решение (6.3) помогло