Sau đây là dành cho TFS 2013 Cập nhật 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. **
Xác định vị trí người dùng hoặc người sử dụng với địa chỉ email cần phải được thiết lập. Có thể trùng lặp trong bảng Identities
. Tôi thấy rằng những người có số lượng cao nhất SequenceId
là hoạt động 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>')
này đưa ra một danh sách gần đây nhất Id
(s), ở dạng GUID, cho các tài khoản mà bạn cần phải cập nhật. Các GUID này phải được định dạng lại thành ArtifactId
, là định dạng nhị phân được chuyển đổi. Điều này được thực hiện bằng cách đảo ngược thứ tự byte (từ thấp đến cao) hoặc mỗi phần trong ba phần đầu của GUID, nhưng để lại hai phần cuối cùng theo thứ tự. Ví dụ:
Returned 'Id' GUID =01020304-0506-0708-090A-0B0C0D0E0F10
Byte Swapped GUID =04030201-0605-0807-090A-0B0C0D0E0F10
Reformatted 'ArtifacId'=0x0403020106050807090A0B0C0D0E0F10
Tiếp theo, bạn phải tìm thấy PropertyId
(s) được TFS sử dụng cho thông báo qua email. Trong TFS 2013 U5, điều này có thể được tìm thấy với các truy vấn sau đây:
USE Tfs_TFSConfiguration
SELECT Name, PropertyId FROM tbl_PropertyDefinition WHERE Name LIKE '%Address%'
này sẽ cung cấp cho bạn PropertyId
(s) cho ConfirmedNotificationAddress
và CustomNotificationAddresses
; đó là hai trường thuộc tính được TFS 2013 U5 sử dụng để gửi email thông báo.
Tiếp theo, bạn cần phải tìm ra InternalKindId
cho khung Identity
cho TFS DatabaseCategory
USE Tfs_TFSConfiguration
SELECT Description, InternalKindId FROM tbl_PropertyArtifactKind
WHERE Description='Identity'
Bây giờ để đặt nó tất cả cùng nhau, ...
Nếu hồ sơ cấu hình cho người dùng của bạn (s) đã tồn tại, bạn có thể cập nhật cài đặt với:
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>')
Lưu ý: rằng ArtifactId
là giá trị nhị phân, dựa trên cơ sở dữ liệu GUID bán từng byte và sẽ không khớp với giá trị được trích dẫn trong truy vấn UPDATE
. I.e. phần này của truy vấn sẽ trông giống như sau:
WHERE ArtifactId=0x90D490F6BF7B31491CB894323F38A91F AND
Dưới đây tôi giả định rằng PartitionId
là '1'; điều này cần được xác minh trước khi bạn tiếp tục bằng một bản quét ngắn gọn các bản ghi trong bảng tbl_PropertyValue
.
Nếu bạn đang tải các thiết lập cấu hình vẫn chưa được thiết lập:
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>')
Lưu ý: rằng ArtifactId
phải là một giá trị nhị phân không thể viện chứng, chuyển đổi từ GUID trở về từ các tbl_Identity
như đã giải thích ở trên.
Lưu ý: hai bản ghi được tạo cho mỗi ArtifactId
, một cho mỗi PropertyId
.
** WARNING ** Getting caught editing the TFS database directly
** will void your Microsoft Support Agreement. **
** Proceed at your own risk. **
(này làm việc cho tôi, ... nhưng, tôi không có một thỏa thuận hỗ trợ của Microsoft để làm mất hiệu lực.)
Cảm ơn cho câu trả lời chi tiết. Đây là những tin tức tuyệt vời. Vì vậy, bây giờ tôi có thể tự động gửi email cho mỗi thành viên trong nhóm bất cứ khi nào một bản dựng được phát hành. :) – Christian
Có thực sự không có cách nào để quản lý địa chỉ email của người dùng nếu TFS không được kết nối với AD? Bất kỳ plugin, API hoặc tương tự nào có thể làm một điều như vậy? – Xorandor
Đúng - trong TFS 2005, TFS 2008 và TFS 2010.Người dùng sẽ có thể cập nhật địa chỉ email thông báo của họ trong phiên bản tiếp theo của TFS thông qua Quản lý hồ sơ trong Team Web Access nhưng tôi không chắc chắn liệu sẽ có một UI tiếp xúc với quản trị viên để cập nhật chúng hay không. Phiên bản tiếp theo của TFS vẫn chưa được thực hiện, vì vậy chúng ta sẽ thấy! Nếu nó được lưu trữ theo cách có thể được chỉnh sửa thông qua API, thì ai đó cũng có khả năng xây dựng một công cụ tùy chỉnh để thực hiện nó. –