La siguiente es para TFS 2013 Actualización 5
** WARNING ** Getting caught editing the TFS database directly
** will void your Microsoft Support Agreement. **
What follows is not for the uninitiated. ** Proceed at your own risk. **
localizar al usuario o usuarios con direcciones de correo electrónico que necesita ser fijado. Puede haber duplicados en la tabla Identities
. Encontré que los que tenían el SequenceId
más alto eran los activos Identities
.
Use Tfs_TFSConfiguration
SELECT i1.AccountName, i1.Id FROM tbl_Identity AS i1
LEFT OUTER JOIN tbl_Identity AS i2
ON (i1.AccountName=i2.AccountName AND i1.SequenceId<i2.SequenceId)
WHERE i2.AccountName IS NULL
AND i1.AccountName in ('<your first user>','<another user>','<and so on>')
Esto da una lista de las más recientes la Id
(s), en forma GUID, para las cuentas que tiene que actualizar. Estos GUID deben formatearse en ArtifactId
(s), que es un formato binario transformado. Esto se logra invirtiendo el orden de bytes (de menor a mayor) o cada una de las tres primeras partes del GUID, pero dejando las dos últimas partes en orden. Ej .:
Returned 'Id' GUID =01020304-0506-0708-090A-0B0C0D0E0F10
Byte Swapped GUID =04030201-0605-0807-090A-0B0C0D0E0F10
Reformatted 'ArtifacId'=0x0403020106050807090A0B0C0D0E0F10
A continuación, usted tiene que encontrar la PropertyId
(s) utilizado por TFS para notificaciones por correo electrónico. En TFS 2013 U5, esto se puede encontrar con la siguiente consulta:
USE Tfs_TFSConfiguration
SELECT Name, PropertyId FROM tbl_PropertyDefinition WHERE Name LIKE '%Address%'
Esto le dará la PropertyId
(s) para ConfirmedNotificationAddress
y CustomNotificationAddresses
; cuáles son los dos campos de propiedad utilizados por TFS 2013 U5 para enviar correos electrónicos de notificación.
A continuación, usted tiene que encontrar la InternalKindId
para el Marco Identity
para el TFS DatabaseCategory
USE Tfs_TFSConfiguration
SELECT Description, InternalKindId FROM tbl_PropertyArtifactKind
WHERE Description='Identity'
Ahora a poner todo junto, ...
Si los registros de configuración para el usuario (s) ya existen, puede actualizar la configuración con:
USE Tfs_TFSConfiguration
UPDATE tbl_PropertyValue SET LeadingStringValue='<user's notification email address>'
WHERE ArtifactId=<ArtifactId, reformatted from tbl_Identity query>
AND PropertyId IN ('<first PropertyId from tbl_PropertyDefinition>', '<second id>')
Nota: que ArtifactId
es un valor binario, basado en un GUID de base de datos de semi-bytes intercambiados, y no coincidirá con un valor cotizado en la consulta UPDATE
. I.e. esta parte de la consulta se verá algo como:
WHERE ArtifactId=0x90D490F6BF7B31491CB894323F38A91F AND
A continuación Asumo que el PartitionId
es '1'; esto debe verificarse antes de continuar con un breve examen de los registros en la tabla tbl_PropertyValue
.
Si va a cargar los parámetros de configuración que aún no han sido establecidos:
USE Tfs_TFSConfiguration
INSERT INTO tbl_PropertyValue
(PartitionId, ArtifactId, InternalKindId, Version, PropertyId, LeadingStringValue)
VALUES ('1', <ArtifactId, reformatted from tbl_Identity query>,
'<InternalKindId from tbl_PropertyArtifactKind>',
'0',
'<first PropertyId from tbl_PropertyDefinition>',
'<user's notification email address>'),
('1', <ArtifactId, reformatted from tbl_Identity query>,
'<InternalKindId from tbl_PropertyArtifactKind>',
'0',
'<second PropertyId from tbl_PropertyDefinition>',
'<user's notification email address>')
Nota: que ArtifactId
debe ser un valor binario sin comillas, transformado desde el GUID volvió de la tbl_Identity
como se explicó anteriormente.
Nota: que se crean dos registros para cada ArtifactId
, uno para cada PropertyId
.
** WARNING ** Getting caught editing the TFS database directly
** will void your Microsoft Support Agreement. **
** Proceed at your own risk. **
(Esto funciona para mí, pero ... , no tengo un acuerdo de soporte técnico de Microsoft para invalidar.)
Gracias por la respuesta detallada. Estas son buenas noticias. Entonces ahora puedo enviar automáticamente un correo electrónico a cada miembro del equipo cada vez que se lanza una compilación. :) – Christian
¿Realmente no hay forma de administrar las direcciones de correo electrónico de los usuarios si TFS no está conectado a AD? Cualquier complemento, API o similar que pueda hacer tal cosa? – Xorandor
Correcto: en TFS 2005, TFS 2008 y TFS 2010.Los usuarios podrían actualizar su dirección de correo electrónico de notificación en la próxima versión de TFS a través de Profile Management en Team Web Access, pero no estoy seguro de si habrá una interfaz de usuario expuesta para que los administradores los actualicen. La próxima versión de TFS aún no está lista, ¡así lo veremos! Si se almacena de una manera que se puede editar a través de la API, entonces alguien podría crear una herramienta personalizada para hacerlo también. –