SQL Server 2005 - Связанные серверы и рабочие места агентов - PullRequest
0 голосов
/ 20 марта 2009

У меня странный сценарий, который я сейчас не могу объяснить. Я живу надеждой, что это просто «чувство пятницы» или что какой-то любезный человек здесь спасет мой мозг и спасет меня от бесконечных циклов «но почему !?» :)

Два сервера, работающие под управлением SQL Server 2005, с записями DNS:

1. ServerA  
2. ServerB  

(Ну, на самом деле их так не называют, но этого будет достаточно ...)

В обоих экземплярах SQL Server настроены связанные серверы, указывающие на другой сервер.

По очевидным причинам безопасности для конфигурации LinkedServer Security установлено значение:

- Be made using the login's current security context

Другие «Параметры связанного сервера» ...

Collation Compatible: True
Data Access:          True
RPC:                  True
RPC Out:              True
Use Remote Collation: True
Collation Name:       <blank>
Connection Timeout:   30
Command Timeout:      10

Для обоих экземпляров создается логин с одним и тем же паролем. Учетные записи получают соответствующие разрешения на выполнение для соответствующих хранимых процедур.

Я пишу некоторый код и выполняю его под этим логином, и все это работает ура


Но когда я создаю агентское задание для запуска этих хранимых процедур, все идет не так. Владелец задания агента - «Automatic_job_login», но моя регистрация ошибок дает следующее: - Ошибка входа пользователя 'automatic_job_login'

(Опять же, это имя было изменено, чтобы защитить виновных.)


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

Чтобы еще больше сбить с толку, если я изменю конфигурацию Linked Server Security на «Be made with this secuirty context:» и укажу «automatic_job_login» с правильным паролем, он работает нормально.

Я что-то упустил, я знаю, что должен быть, но я не могу найти что. Я читал документацию, пока мои глаза не кровоточат, и у меня не получилось. Пожалуйста, помогите мне:)


[Оставлять параметр «Связанный сервер Secuiry» как «Сделайте с использованием этого защищенного контекста:» не вариант, поскольку это предоставит всем пользователям этого сервера неприемлемые уровни доступа к другому серверу.]

1 Ответ

3 голосов
/ 21 марта 2009

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

Поскольку у вас есть SQL Server 2005, вы можете использовать EXEC AS USER = 'mylogin' в качестве сохраненной опции proc.

В противном случае вы должны задать имя пользователя базы данных с помощью параметра @database_user_name, равного sp_add_jobstep. В SSMS вы можете установить контекст. Право собственности на работу немного отличается от устава, IIRC.

...