2017-02-21 6 views
1

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

Я проверил, и агент SQL использует основную учетную запись службы SQL Server, которую я предполагаю, будет иметь права на все.

Любые мысли по устранению неисправностей будут оценены по достоинству.

+0

Какие-либо намеки на трудоустройство? – artm

+0

@artm, нет сообщения об ошибке, потому что работа выполняется нормально - данные просто неполные. Если я вручную запускаю задание из SSMS, я получаю данные из обеих таблиц, если я планирую, что он игнорирует соединение и возвращает половину данных. –

ответ

2

На странице «Шаги» задания sql вы можете указать «Run As» определенному пользователю.

В противном случае, учетная запись, что агент SQL Server работает под управлением будет иметь права на все базы данных/таблиц и т.д.

Вы должны быть в состоянии видеть, что происходит, когда работа идет по графику, просмотрев история работы. Вы делаете это, щелкнув правой кнопкой мыши либо задание в списке заданий, либо щелкнув правой кнопкой мыши задание в мониторе задания и выбрав «Просмотр истории».

Надеюсь, это поможет.

+0

Когда я вручную запускаю процедуру без RunAs - нет проблем. Когда я вручную запускаю задание (которое выполняет ту же процедуру) без RunAs - нет проблемы. Когда я планирую работу без установки RunAs, она дает мне только половину данных без ошибок. (Мы используем сквозную аутентификацию), и когда я пытаюсь поместить свои учетные данные в поле RunAs - он не может даже запускаться вручную и дает ошибку: пользователь сервера «%. * Ls» не является допустимым пользователем в базе данных «%». * LS'. Эта безопасность меня сбивает с толку. –

+0

Была ли недавно перенесена база данных с другого сервера? См. Эту статью: https://support.microsoft.com/en-us/help/240872/how-to-resolve-permission-issues-when-you-move-a-database-between-servers-that -are-running-sql-server – OnoMrBill

+0

Помимо информации в статье, о которой я упоминал ранее, вы или другой администратор должны проверять пользователя входа в систему и пользователя базы данных, который вы планируете использовать для регулярного запуска задания. Быстрый вопрос: 2 соединенные таблицы в той же базе данных? Обычно мы использовали то, что мы назвали «учетной записью службы»; обычно это логин SQL, который имеет права db_owner в базе данных. Вы можете установить его как тест, чтобы убедиться, что он работает, а затем настроить параметры безопасности позже. – OnoMrBill

0

Была поврежденная работа. Я удалил задание и воссоздал новый, и он работал, как ожидалось.