Создайте и запустите запланированные задачи Windows с веб-сервера, но подключитесь к SQL с помощью Win Auth - PullRequest
0 голосов
/ 21 февраля 2019

Мой IIS AppPool работает как пользователь определенного домена, поэтому мой сайт может получить доступ к SQL-серверу через проверку подлинности Windows.Это хорошо работает.

Но я также динамически создаю запланированные задачи Windows.Я не могу создать эти задачи как пользователь пула приложений IIS, так как пользователь не вошел на веб-сервер и, следовательно, задачи не выполняются.

С помощью этой ссылки я теперь могу создавать свои запланированные задачи как пользователь NetworkService.Но когда я запускаю мое приложение из IIS, оно теперь работает очень хорошо.

Все еще создает задачи, но задача также пытается войти в SQL с проверкой подлинности Windows, но, похоже, использует локального системного пользователя.который не имеет разрешения Win Auth для SQL.

Есть ли способ, что моя запланированная задача сможет войти в SQL с Win Auth?(запуск задачи от имени пользователя домена не будет работать, поскольку задача может быть выполнена только в том случае, если пользователь вошел в систему или я ввожу пароль, который будет невозможен).

Или я совершенно не правпуть, и я должен попробовать что-то совершенно другое?

Мой код для создания задачи:

using (TaskService ts = new TaskService())
            {
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = "My Test";
                td.Principal.Id = "NT AUTHORITY\\NETWORKSERVICE";
                td.Principal.LogonType = TaskLogonType.ServiceAccount;

                td.Triggers.Add(new DailyTrigger {DaysInterval = 1});

                td.Actions.Add(new ExecAction("c:\\mydir\\myjob.exe"));
                td.Settings.AllowDemandStart = task.AllowDemandStart;
                td.Settings.Hidden = task.Hidden;

                ts.RootFolder.RegisterTaskDefinition("My Test", td, 
                      TaskCreation.CreateOrUpdate, "NT AUTHORITY\\NETWORKSERVICE", null, 
                      TaskLogonType.ServiceAccount);
            }
...