Я неожиданно беру на себя ответственность за предыдущего администратора нашей системы TFS, который внезапно покинул компанию. Я был назначен администратором TFS и на сервере приложений TFS, прежде чем это произошло, но по-прежнему есть хотя бы одна вещь, которую я не могу понять. Кажется, есть несколько предупреждений, настроенных под предыдущей учетной записью администратора, которая отправляет нам письмо всем пользователям всякий раз, когда файл проверен. Я не могу точно сказать, как выглядит эта подписка, но я предполагаю это либо в Диалоговое окно "Оповещения о проекте" для проекта или предупреждение, настроенное с помощью редактора предупреждений TFS Power Tools. Я не вижу предупреждений, настроенных другими пользователями в этих областях. Есть ли какой-либо способ прямого редактирования таблицы tbl_subscription непосредственно, чтобы попытаться удалить или изменить эти предупреждения? (Я думаю, что я вижу предупреждение в этой таблице SQL, но я не хочу напрямую взламывать базу данных.)
Редактировать предупреждения других пользователей для проекта в TFS
Ответ 1
Добро пожаловать в мир TFS - жаль, что ваше крещение будет одним из огней.
Вы правы, чтобы быть осторожным в редактировании базы данных напрямую - всегда лучше избегать TFS. Инструмент подписки на события TFS (изначально созданный создателем этого сайта) должен уметь выполнять эту работу, но я думаю, что это может быть немного устаревшим и может сделать с некоторой любовью. В прошлый раз, когда я попробовал, он не работал у меня, но я думаю, что с тех пор он может быть обновлен.
Если этот инструмент не работает для вас, то это один из примеров, когда вы можете фактически уйти с использованием веб-служб напрямую (что и делает этот инструмент под капотом).
CAVEAT - это проверено с гарантией "Работы на моей машине". Но если вы удалите неправильную подписку, вы рискуете испортить свою инсталляцию TFS. Поэтому берем резервные копии и тщательно проталкиваемся...
Для начала:
Войдите в систему TFS в качестве пользователя администратора TFS (TFSSETUP) поверх удаленного рабочего стола, а затем перейдите к следующему адресу в Internet Explorer:
http://localhost:8080/Services/V1.0/EventService.asmx
Это методы веб-службы Event Service. Первый, который вы хотите посмотреть, это метод EventSubscriptions: -
http://localhost:8080/Services/V1.0/EventService.asmx?op=EventSubscriptions
В поле userid введите звездочку (*) и нажмите клавишу вызова.
Затем будет возвращен большой список всех подписчиков событий в TFS, включая те, которые позволяют частям TFS разговаривать с другими частями. Если вы прокрутите страницу вниз, вы найдете свою подписку на электронную почту. Запишите идентификатор тех, которые вы хотите удалить.
Затем перейдите к методу отмены подписки:
http://localhost:8080/Services/V1.0/EventService.asmx?op=UnsubscribeEvent
Введите идентификатор уведомления, которое вы хотите удалить, и нажмите клавишу вызова. Повторите все события, которые вы хотите удалить.
После того, как вы удалили те, которые вы не хотите, вы можете создавать разные, используя инструменты электропитания и т.д.
Надеюсь, что это поможет - удачи.
Martin.
Заметьте, что не получают никаких дружественных подсказок отмены или чего-либо еще, поскольку это довольно хакерский хаос на низком уровне. Поэтому перед этим вы хотите иметь резервные копии и т.д.
Ответ 2
Я очень рад сказать, что в текущей версии TFS и в Visual Studio Team Services администраторы могут управлять другими оповещениями пользователя с помощью Team Web Access. К счастью, это должен быть сценарий разочарования в прошлом.
У меня есть еще одна информация, доступная в блоге, написанном для этой темы здесь: http://www.edsquared.com/2012/02/09/Creating+EMail+Alerts+For+Team+Members+In+TFS.aspx
Ответ 3
Я бы очень осторожно относился к редактированию таблицы напрямую; см. предостережения и предложения в этот поток. (Я не пробовал приложения, которые они рекомендуют, поэтому принимайте соответствующие меры предосторожности/резервные копии.)
Ответ 4
Я согласен с Мартином в том, что я не редактирую базу данных напрямую, но этот запрос может помочь с его первым шагом (найти идентификатор события, из которого вы хотите отказаться от подписки):
SELECT
ES.Id,
U.display_name,
ES.*
FROM [Tfs_iSystems].[dbo].[tbl_EventSubscription] ES
INNER JOIN [Tfs_Configuration].dbo.tbl_security_identity_cache U
ON ES.SubscriberId = U.tf_id
Я нашел использование XML, созданного веб-сервисом, громоздким для работы. Если у вас есть идентификатор, который вам нужен, я бы рекомендовал отказаться от подписки с помощью веб-службы:
http://localhost:8080/tfs/DefaultCollection/Services/V1.0/EventService.asmx?op=UnsubscribeEvent
Обратите внимание, что это для TFS2010
Ответ 5
Я не уверен точно, что я здесь делаю, но у меня была небольшая победа и я смог получить страницу, но мне пришлось изменить путь к этому:
"HTTP://локальный: 8080/TFS/_tfs_resources/Услуги/v1.0/EventService.asmx"
Ответ 6
Это работало для меня на TFS 2010. в основном там хранимая процедура, которая удаляет подписки в базе данных TFS.
- Подключение к машине TFS
- Запустить ssms
- Выберите локальный компьютер в качестве устройства для подключения.
- В проводнике объектов найдите базу данных с именем
tfs_yourprojectname
. - Найдите таблицу с именем
tbl_EventSubscription
и щелкните правой кнопкой мыши = > выберите топ 1000 - Посмотрите список подписки и определите идентификатор того, который хотите удалить.
- Найдите хранимую процедуру с именем
prc_UnsubscribeEvent
в проводнике объектов, щелкните правой кнопкой мыши и выберите "выполнить хранимую процедуру". введите значение столбца id в таблице подписки на событие для предупреждения, которое вы хотите удалить.