Przeniosłem bazy danych SQL na których działa TFS na innego SQL i zaczęły się problemy:) Po poprawnym przeniesieniu baz danych, skonfigurowaniu Reporting Services, uzupełnieniu konfiguracji o nową nazwę Data-Tier, przebudowaniu kostki Team System i po przeniesieniu baz danych WSS 3.0 wszystko wydaje się działać poprawnie. Co prawda cała procedura jest dobrze udokumentowana to jednak wydaje mi się, że zapomniano w niej jednak o jednej rzeczy.
Po zakończeniu operacji od czasu do czasu w event logu zaczął pojawiać się następujący wpis:
Event Type: Information
Event Source: TFS Services
Event Category: None
Event ID: 3007
Date: 2/12/2010
Time: 9:09:27 AM
User: N/A
Computer: MACHINENAME
Description:
TF53010: The following error has occurred in a Team Foundation component or extension:
Date (UTC): 2/12/2010 8:09:27 AM
Machine: MACHINENAME
Application Domain: /LM/W3SVC/3/Root/Services-2-129104063734642635
Assembly: Microsoft.TeamFoundation.Server, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Process Details:
Process Name: w3wp
Process Id: 1836
Thread Id: 3168
Account name: DOMAINNAME\TFSSERVICE
Detailed Message: TF205005: Team Foundation Server is unable to locate one or more of the installed error messages. Please repair the installation from Programs and Features in Control Panel to fix this problem. For more information, see “How to: Repair Team Foundation Server” in the Team Foundation Server Installation Guide that can be downloaded from the Microsoft Web site (http://go.microsoft.com/fwlink/?LinkID=82562 ). Detailed information :Error 400006, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage.
Web Request Details
Url: http://bbtfs01:8080/Services/v1.0/GroupSecurityService.asmx [method: POST]
User Agent: Team Foundation (w3wp.exe[Integration], 9.0.30729.1)
Headers: Content-Length=475&Content-Type=text%2fxml%3b+charset%3dutf-8&Accept-Encoding=gzip&Accept-Language=en-US&Expect=100-continue&Host=bbtfs01%3a8080&User-Agent=Team+Foundation+(w3wp.exe%5bIntegration%5d%2c+9.0.30729.1)&X-TFS-Version=1.0.0.0&X-TFS-Session=50a2974e-efa9-4138-b357-f327267aa27b&SOAPAction=%22http%3a%2f%2fschemas.microsoft.com%2fTeamFoundation%2f2005%2f06%2fServices%2fGroupSecurity%2f03%2fReadIdentity%22
Path: /Services/v1.0/GroupSecurityService.asmx
Local Request: True
Host Address: 10.10.10.181
User: DOMAINNAME\TFSSERVICE [authentication type: NTLM]
Exception Message: TF205005: Team Foundation Server is unable to locate one or more of the installed error messages. Please repair the installation from Programs and Features in Control Panel to fix this problem. For more information, see “How to: Repair Team Foundation Server” in the Team Foundation Server Installation Guide that can be downloaded from the Microsoft Web site (http://go.microsoft.com/fwlink/?LinkID=82562 ). Detailed information :Error 400006, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage. (type DatabaseConfigurationException)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Po dość długim główkowaniu i szukaniu udało mi się znaleźć rozwiązanie tego problemu nieco odmienne niż to zasugerowane w powyższej informacji (nie zasugerowałem się powyższym z powodu dużej customizacji na instacji TFS, którą zarządzam i koniecznością przeinstalowania dodatków). Przyczyną niedogodności jest umieszczenie definicji błędów w bazie danych master (a na ten temat w nie było nic w scenariuszu na MSDN).
Definicje błędów można uzupełnić, poniżej opis jak to zrobić:
- Wyeksportować definicje ze starego serwera bazodanowego do pliku:
bcp.exe “select * from master.dbo.sysmessages where error > 50000” queryout “c:\tfs_sysmessages_tfsdatabasehost.txt” -T -c -S oldSQL
- Utworzyć tymczasową tabelę w bazie na nowym serwerze bazodanowym:
CREATE TABLE [dbo].[tmp_sysmessages](
[error] [int] NOT NULL,
[severity] [tinyint] NULL,
[dlevel] [smallint] NULL,
[description] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,
[msglangid] [smallint] NOT NULL
) ON [PRIMARY]
- Zaimportować do niej definicje:
bcp.exe tempDatabase.dbo.tmp_sysmessages in “c:\tfs_sysmessages_tfsdatabasehost.txt” -T -c -S newSQL
- Przekopiować tymczasową tabelę do używając procedury składowanej sp_addmessage:
DECLARE @Error AS int
DECLARE @Severity AS tinyint
DECLARE @DLevel as smallint
DECLARE @Description as VARCHAR(255)
DECLARE @Msglangid as smallint
DECLARE curMessages CURSOR FOR
SELECT error, severity, dlevel, description, msglangid
FROM tempDatabase.dbo.tmp_sysmessages
WHERE error > 50000
OPEN curMessages
FETCH NEXT FROM curMessages
INTO @Error, @Severity, @DLevel, @Description, @Msglangid
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_addmessage @Error, @Severity, @Description, NULL, ‘TRUE’, ‘replace’
FETCH NEXT FROM curMessages
INTO @Error, @Severity, @DLevel, @Description, @Msglangid
END
CLOSE curMessages
DEALLOCATE curMessages
- Usunąć tymczasową tabelę tmp_sysmessages.
Po wykonaniu czynności z powyższego opisu komunikaty błędów stają się zrozumiałe;)
źródła:
How to: Move Your Team Foundation Server from One Hardware Configuration to Another – MSDN
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.