L’édition Workgroup de Team System est destinée aux petites équipes de développement. Bien que totalement fonctionnelle, elle est limitée à 5 utilisateurs (en réalité 4, le compte ayant servi à l’installation consommant automatiquement une licence). Les comptes de ces utilisateurs doivent être inscrits dans un groupe de sécurité particulier, "Team Foundation Licensed Users", ou "Utilisateurs possédant une licence d’utilisation de Team Foundation Server" (sic) dans la version française, pour leur permettre de se connecter à la plateforme.
Problème : que faire lorsqu’en ajoutant un 5e compte dans ce groupe, une erreur TF50626 apparaît, indiquant qu’il n’est pas possible d’ajouter cet utilisateur car la limite de 5 est déjà atteinte ? Ce problème peut survenir à la suite d’une désynchronisation partielle entre les comptes Active Directory et les comptes inscrits dans le Team Foundation Server.
Malheureusement, l’IHM de Visual Studio est peu explicite comme le montre l’image ci-après (seul 4 comptes apparaissent). Il faut donc passer par les outils en ligne de commande pour en savoir plus.
Le programme TtfsSecurity va nous permettre dans un premier temps de confirmer la présence d’un compte fantôme qui consomme une licence pour rien… La commande à exécuter est la suivante :
tfssecurity /im "Utilisateurs possédant une licence d'utilisation de Team Foundation Server" /server:nomserveur
Comment supprimer ce compte fantôme ? La première étape consiste à localiser le compte dans la base de données de TFS qui stocke la référence des utilisateurs.
A l’aide du SQL Server Management Studio, ouvrir la base TfsIntegration puis la table tbl_gss_groups. Repérer dans la colonne display_name le groupe « Utilisateurs possédant une licence d’utilisation de Team Foundation Server ». Récupérer la valeur contenue dans la colonne sid. Créer ensuite une requête ayant la forme suivante :
Le résultat de cette requête vous donne la liste des SID des comptes inscrits dans le groupe de sécurité "Utilisateurs possédant…". Il ne reste plus maintenant qu’à rechercher le fantôme. Pour cela, utiliser de nouveau le programme TfsSecurity avec la syntaxe suivante (où le xxx correspond à chaque SID issu du résultat de la requête :
tfssecurity /i sid:xxx /server:nomserveur
Si le compte est correct, vous obtenez l’identification de l’utilisateur.
Dans le cas du compte fantôme, l’exécution de la commande échoue en indiquant que l’identification ne peut pas être résolue. Le SID du fantôme étant déterminé, nous allons pouvoir le supprimer et libérer la licence correspondante. Normalement, grâce à ce SID, nous devrions utiliser le programme TfsSecurity avec l’option g- pour supprimer ce compte du groupe de sécurité. Si vous tentez cette opération, un message d’erreur apparaît et indique qu’il ne peut pas résoudre l’identifiant !
Seule solution : supprimer physiquement l’enregistrement dans la table tbl_gss_group_membership dont le member_sid est égal au SID fantôme. Cette opération réalisée, vous pourrez enfin ajouter votre 5e utilisateur.
Note : la modification directe dans les bases TFS n'est pas recommandée et ne doit être effectuée qu'à titre exceptionnel comme c'est le cas ici.
Pour en savoir plus sur la commande TfsSecurity : http://msdn.microsoft.com/en-us/library/ms252504(VS.80).aspx