Настроить SQL Работа сервера с помощью dtsx - PullRequest
0 голосов
/ 27 апреля 2020

Я мигрировал с SQL Server 2008 на 2019. На старом сервере настроено задание, которое вызывает файл dtsx. Ему нужен доступ к базе данных, доступ к файловой системе, потому что он сохраняет файлы tmp на диск, и inte rnet connection для отправки этого файла. Строка подключения определяется следующим образом:

<DTS:ConnectionManager
      DTS:ConnectionString="Provider=SQLOLEDB.1;Password=p@ssword;Persist Security Info=True;User ID=MyUser;Initial Catalog=MyDB;Data Source=SQLServer\Instance;" />

Если я запускаю ее, используя Execute Package Utility, она работает. Если я запускаю его через задание SQLServer, я получаю сообщение об ошибке, что пользователю не предоставлен доступ к файловой системе. Владелец задания тот же, что я вошел в систему и запустил пакет с помощью Утилиты.

В истории я вижу:

The job failed.  The Job was invoked by User Domain\RightUser.....

где RightUser - Владелец (и так же, как раньше этот же пользователь запускал пакет с помощью утилиты)

, но во втором ряду ошибки:

Executed as user: NT Service\SQLAgent$AnotherUser. 

И я понятия не имею, откуда появился этот AnotherUser.

Что не так?

Более того, мне не очень нравится жестко заданный пароль в строке подключения. Если задание выполняется в контексте его владельца, должно ли оно работать, изменяя строку подключения на Integrated Security=True;, верно?

1 Ответ

0 голосов
/ 29 апреля 2020

Это очень распространенная проблема с запуском пакетов SSIS. Этот другой пользователь - SQL Агент, который на самом деле запускает пакет (это пользователь по умолчанию, выполняющий шаги в заданиях). Владелец задания не имеет никакого отношения к запуску пакетов служб SSIS. SQL Имя пользователя агента задается во время установки SQL Сервера. Если он опущен, установщик автоматически создает имя пользователя, как вы описали.

На второй вопрос, да, вы правы. Если пользователь, выполняющий пакет, имеет правильные права доступа к SQL серверу, описанному в строке подключения, идентификатор пользователя и пароль не нужны. Но в вашем случае пакет запускается агентом SQL с именем пользователя уровня службы NT, поэтому может быть невозможно добавить это имя пользователя на сервер SQL. Вам необходимо установить правильное имя пользователя для запуска пакета служб SSIS и установить его в качестве учетной записи прокси для сервера SQL, как описано здесь: https://community.spiceworks.com/how_to/129293-configure-an-ssis-package-to-execute-as-a-proxy-account

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...