Исполняемый файл c #, который подключается к «Visual Studio Online» (vso), не работает через агент заданий SQL - PullRequest
0 голосов
/ 02 января 2019

Я создал исполняемый файл с использованием C #, который подключается к VSO, получает рабочие элементы и обновляет их.

Вот код, используемый для подключения к VSO и получения проекта:

TfsTeamProjectCollection tfsTeamProjectCollection = null;
NetworkCredential networkCredential = new NetworkCredential(userName, password);
ICredentials credential = (ICredentials)networkCredential;
Uri tfsUri = new Uri(tfsUrl);

TfsConfigurationServer tfai = new TfsConfigurationServer(tfsUri, (ICredentials)credential);

try
{
    tfai.EnsureAuthenticated();
}
catch (Exception ex)
{
    throw new Exception(string.Format("Auth fail.({0})", ex.Message));
}
Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService tpcService = tfai.GetService<Microsoft.TeamFoundation.Framework.Client.ITeamProjectCollectionService>();

Microsoft.TeamFoundation.Framework.Client.CatalogNode configurationServerNode = tfai.CatalogNode;

System.Collections.ObjectModel.ReadOnlyCollection<Microsoft.TeamFoundation.Framework.Client.CatalogNode> tpcNodes = configurationServerNode.QueryChildren(new Guid[] { Microsoft.TeamFoundation.Framework.Common.CatalogResourceTypes.ProjectCollection }, false, Microsoft.TeamFoundation.Framework.Common.CatalogQueryOptions.None);

foreach (Microsoft.TeamFoundation.Framework.Client.CatalogNode tpcNode in tpcNodes)
{
    if (tpcNode.Resource.DisplayName.ToUpper() == "PROJECTNAME")
    {
        tfsTeamProjectCollection = tfai.GetTeamProjectCollection(new Guid(tpcNode.Resource.Properties["InstanceID"]));
        foundProject = true;
        break;
    }
}

if(foundProject)
{
    WorkItemStore workItemStore = (WorkItemStore)tfsTeamProjectCollection.GetService(typeof(WorkItemStore));
}

Код работает нормально. Даже exe-код того же кода работает нормально при запуске вручную.

Я создал пакет служб SSIS, задача выполнения процесса прекрасно запускается при запуске вручную.

Но когда я развертываю пакет и запускаю его через задание агента SQL, происходит сбой с ошибкой:

Ошибка: при выполнении "name.exe" "" в "". Код завершения процесса был "-532462766", в то время как ожидаемое было "0".

Я попытался запустить пакет в 32-битной и 64-битной среде. Каждый раз происходит сбой с одной и той же ошибкой.

Все пользователи (SQLSERVERINSTANCE, SQLSERVERAGENT, SERVICEACCOUNT) имеют доступ к исполняемому файлу.

Я что-то упустил? Или мне нужно внести некоторые изменения на стороне сервера, чтобы агент SQL мог подключаться к VSO?

P.S .: Я использую SQL SERVER 2016.

1 Ответ

0 голосов
/ 02 января 2019

"Все пользователи (SQLSERVERINSTANCE, SQLSERVERAGENT, SERVICEACCOUNT) имеют доступ к исполняемому файлу." не означает, что эти учетные записи имеют доступ к ресурсу, например, ссылки, используемые в исполняемом файле.

Вам необходимо создать учетную запись агента с достаточными разрешениями и использовать ее для запуска шага задания.

См .: Учетные данные SQL и прокси для задания агента

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