Skip to content


TFS: Problem po przeniesieniu Data-Tier

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

How to: Restore Data for Team Foundation – MSDN

Team Foundation Server is unable to locate one or more of the installed error messages error – MSDN Forums

Posted in SQL Server, tech, TFS.

Tagged with , , , , , , , , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.



Skip to toolbar