Как настроить process task в SSIS для выполнения bat-файла, расположенного на сервере под другим пользователем

#sql-server #ssis

#sql-сервер #ssis

Вопрос:

Я пытаюсь выполнить командный файл в SSIS. Этот пакетный файл расположен на сервере в сети. Мне также нужно ввести другого пользователя и пароль.

Я попытался настроить исполняемый файл следующим образом networkservername location, и я попробовал cmd.exe и поместите команду runas в качестве аргумента. Ни то, ни другое не сработало, и я не нахожу четких инструкций о том, как этого добиться. Буду признателен за любую помощь.

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

Комментарии:

1. Почему вам нужно запускать в нем под другой учетной записью пользователя?

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

3. Как вы выполняете пакеты ssis? Задание агента SQL?

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

5. ОК. Я предполагаю, что ваша учетная запись пользователя не имеет доступа к базе данных. вам необходимо настроить это, а также для учетной записи агента sql server (когда вы начинаете выполнение пакета ssis через задание агента sql)

Ответ №1:

Я не ставлю это в заслугу, но я взял это из другого ответа stackoverflow.

Вот способ script task выполнить процесс от имени кого-то другого:

 System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "filename"; //use the fullpath
proc.StartInfo.Arguments = "args...";
proc.StartInfo.Domain = "domainname";
proc.StartInfo.UserName = "username";
string password = "user entered password";
for (int x = 0; x < password.Length; x  )
{
    ssPwd.AppendChar(password[x]);
}
password = "";
proc.StartInfo.Password = ssPwd;
proc.Start();