Я мигрировал с 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;
, верно?