Вызов API-интерфейсов Team Foundation Server (TFS) через хранимую процедуру SQL Server

Я создаю свой первый проект ASP.NET MVC. Я начал с подключения TFS и добавления ошибок в TFS через С#.

var tfsURI = new Uri("http://test:8080/tfs");
var networkCredential1 = new NetworkCredential("test", "test!");

ICredentials credential = (ICredentials)networkCredential1;
Microsoft.VisualStudio.Services.Common.WindowsCredential winCred = new Microsoft.VisualStudio.Services.Common.WindowsCredential(credential);
VssCredentials vssCredentials = new VssCredentials(winCred);

using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsURI, vssCredentials))
{
    collection.EnsureAuthenticated();
    WorkItemStore workItemStore = collection.GetService<WorkItemStore>();
    Project teamProject = workItemStore.Projects["Test"];
    WorkItemType workItemType = teamProject.WorkItemTypes["Bug"];

    WorkItem Defect = new WorkItem(workItemType);
    FileInfo fi = new FileInfo(@"C:\\Document.docx");
    Attachment tfsAttachment = new Attachment(fi.FullName);
    Defect.Attachments.Add(tfsAttachment);

    Defect.Title = "Testing from VS to TFS Bug";
    Defect.Description = "Testing from VS to entered Bug in to TFS.";
    Defect.Fields["Assigned To"].Value = "Test";

    Defect.Save();
} 

Этот код, показанный выше, работает нормально.

Но возможно ли достичь того же результата, используя хранимую процедуру SQL Server? Есть ли способ подключиться к TFS и добавить ошибку в TFS с помощью хранимой процедуры?

У меня есть база данных и из хранимой процедуры sql я хотел подключиться к TFS и создать WorkItem. Через С# я сделал, как видно из приведенного выше примера. Но мне нужен любой пример, если та же самая вещь может быть достигнута с помощью хранимой процедуры.

Ответ 1

Лучшее решение, которое я нашел после большого количества исследований, так как SP невозможно. Решение заключается в создании службы Windows. который будет работать в фоновом режиме каждые 5 минут и будет контролировать вход в SQl Table (мой случай), если запись существует для Bug, создаст Ticket в TFS. на данный момент это простое, лучшее решение без ущерба для производительности или чего-либо еще.

Ответ 2

Обновление:

Вы можете вызвать веб-сервис из SQL CLR. Некоторые уроки могут быть полезны:


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

Не вносите никаких изменений в базы данных TFS напрямую, в противном случае вы можете потерять поддержку от Microsoft.

Пожалуйста, посмотрите на этот похожий вопрос здесь: Добавить хранимую процедуру в базу данных TFS

В дополнение к использованию клиентского API, вы также можете использовать Rest API в TFS, чтобы что-то сделать.

Рабочие элементы - Создать

POST https://{instance}/{collection}/{project}/_apis/wit/workitems/${type}?api-version=5.0