0

У меня есть хранимая процедура, которую я могу выполнить в SSMS с пользователем домена без домена.Задание агента сервера Sql для выполнения хранимой процедуры

Эта хранимая процедура выбирает данные из таблиц в одной базе данных (DB1), обрезает и выбирает таблицу в DB2.

У пользователя есть datareader, datawriter и dbowner для обеих баз данных.

Проблема:

Когда я выполнить хранимую процедуру с помощью SS агента с выполнить в качестве пользователя, я получаю следующую ошибку

Сервер принципала [пользователь] не в состоянии получить доступ к базе данных [DB1] в контексте текущей безопасности.

Действия, предпринятые до сих пор:

Я попытался решить эту проблему до сих пор:

  1. Включение дб цепочки для обеих баз данных
  2. удаленных пользователей от DB1 и добавленными снова
  3. Проверено с помощью EXEC sp_change_users_login @Action=’Report’, чтобы узнать, потерял ли пользователь. Поскольку это база данных, которая является восстановлением живой. Однако я добавил пользователя после восстановления. Пользователь не был внесен в список осиротевших
+0

Вы пытались выполнить как вызывающий? –

+0

@Giorgi Nakeuri добавлен в качестве вызывающего абонента в сохраненную процедуру и все еще не работает через SSA –

+1

. Лучше задайте вопрос в http://dba.stackexchange.com/ –

ответ

1

Возможный способ обхода, если вы не хотите, чтобы владелец быть са должен иметь пользователь является членом MSDB и предоставить в SQLAgentOperatorRole в MSDB. Посмотрите, работает ли это.

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

+0

пользователь уже имеет SQLAgentOperatorRole в msdb, я согласен, что sa будет работать, но его отключить на этом экземпляре. –

+0

создать специальную учетную запись службы удалил локального пользователя из задания SSA, и работа выполняется правильно. –

+1

попробуйте это .. предоставить CONNECT и CONNECT REPLICATED пользователю с обеих сторон. –

Смежные вопросы