TFS 2010 恢复数据库,TfsJobAgent 无法连接到数据库
Posted
技术标签:
【中文标题】TFS 2010 恢复数据库,TfsJobAgent 无法连接到数据库【英文标题】:TFS 2010 restored database, TfsJobAgent cannot connect to database 【发布时间】:2013-07-10 02:12:33 【问题描述】:我有一个 Team Foundation Server 2010 设置,其中一台服务器上有 TFS,另一台服务器上有数据库。最近带有数据库的服务器完全崩溃了,我不得不更换它。我从备份中恢复了数据库,并将 tfs 的 web.config 文件更改为指向新服务器,并且几乎一切似乎都在工作。我可以连接到 tfs、签出/签入、创建工作项等。但是,我无法对构建进行排队,并且事件日志中充满了错误,指出 TfsJobAgent 无法连接到数据库。我想知道是否有人知道是否有办法将 TfsJobAgent 配置为指向我的新数据库。事件日志详细信息如下(TCOSRV1 是运行 tfs 的机器,而不是数据库服务器)。任何帮助将不胜感激。
TF53010:Team Foundation 中出现以下错误 组件或扩展:日期(UTC):2013 年 7 月 11 日下午 4:55:27 机器: TCOSRV1 应用程序域:TfsJobAgent.exe 程序集: Microsoft.TeamFoundation.Framework.Server,版本=10.0.0.0, 文化=中立,PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727 服务 主机:进程详细信息:进程名称:TFSJobAgent 进程 ID:3520 线程 ID:5304 帐户名称:NT AUTHORITY\NETWORK SERVICE
详细消息:作业代理执行期间出现错误。这 将重试操作。在接下来的五分钟内可能会出现类似错误 不被记录。异常消息:TF246017:Team Foundation Server 无法连接到数据库。验证服务器是 托管数据库是可操作的,并且网络问题不是 阻止与服务器的通信。 (类型 数据库连接异常)
异常堆栈跟踪:在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.TranslateException(Int32 errorNumber, SqlException sqlException, SqlError sqlError) 在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.TranslateException(SqlException sqlException) 在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.MapException(SqlException 例如,QueryExecutionState 查询状态)在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.HandleException(SqlException 例如)在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.Execute(ExecuteType executeType,CommandBehavior 行为)在 Microsoft.TeamFoundation.Framework.Server.ExtendedAttributeComponent.ReadDatabaseAttribute(字符串 属性名)在 Microsoft.TeamFoundation.Framework.Server.DatabaseConnectionValidator.ValidateDatabaseInstanceStamp(字符串 configConnectionString, Guid configInstanceId) 在 Microsoft.TeamFoundation.Framework.Server.DatabaseConnectionValidator.ValidateApplicationConfiguration(字符串 configConnectionString, Guid configInstanceId, List`1 sqlInstances, 字符串分析实例、字符串分析数据库名称、布尔值 ignoreAnalysisDatasourceUpdateErrors, Boolean autoFixConfiguration, Boolean fullValidation, DatabaseVerificationDatabaseTypes continueOnMissingDatabaseTypes) 在 Microsoft.TeamFoundation.Framework.Server.ApplicationServiceHost..ctor(Guid instanceId,字符串连接字符串,字符串物理目录,字符串 插件目录,字符串虚拟目录,布尔值 failOnInvalidConfiguration)在 Microsoft.TeamFoundation.Framework.Server.JobApplication.SetupInternal() 在 Microsoft.TeamFoundation.Framework.Server.JobServiceUtil.RetryOperationsUntilSuccessful(RetryOperations 操作)
内部异常详情:
异常消息:与网络相关或特定于实例的错误 在建立与 SQL Server 的连接时发生。服务器是 未找到或无法访问。验证实例名称是否为 正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位 服务器/实例指定)(类型 SqlException)SQL 异常类:20 SQL 异常编号:-1 SQL 异常过程:SQL 异常行 编号:0 SQL 异常服务器:SQL 异常状态:0 SQL 错误:
异常数据字典:HelpLink.ProdName = Microsoft SQL Server HelpLink.EvtSrc = MSSQLServer HelpLink.EvtID = -1 HelpLink.BaseHelpUrl = http://go.microsoft.com/fwlinkHelpLink.LinkId = 20476
异常堆栈跟踪:在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection,Action1 wrapCloseInAction) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean 集成安全,布尔与故障转移)在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串 newPassword,SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean 与故障转移)在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,字符串 newPassword,SecureString newSecurePassword, 布尔重定向用户实例、SqlConnectionString 连接选项、 SqlCredential 凭据,TimeoutTimer 超时)在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer 超时,SqlConnectionString 连接选项,SqlCredential 凭证,字符串 newPassword,SecureString newSecurePassword, 布尔重定向用户实例)在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 身份、SqlConnectionString 连接选项、SqlCredential 凭证、对象 providerInfo、字符串 newPassword、SecureString newSecurePassword、布尔重定向用户实例、SqlConnectionString 用户连接选项)在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,DbConnectionPoolKey poolKey,对象 poolGroupProviderInfo, DbConnectionPool 池,DbConnection owningConnection, DbConnectionOptions 用户选项)在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool 池,DbConnectionOptions 选项,DbConnectionPoolKey poolKey, DbConnectionOptions 用户选项)在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions 用户选项)在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions 用户选项)在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean 允许创建、布尔型仅OneCheckConnection、DbConnectionOptions userOptions,DbConnectionInternal& 连接)在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject、TaskCompletionSource1 重试、DbConnectionOptions userOptions,DbConnectionInternal& 连接)在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSource1 重试、DbConnectionOptions 用户选项,DbConnectionInternal& 连接)在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection 外部连接,DbConnectionFactory 连接工厂, TaskCompletionSource1 重试,DbConnectionOptions userOptions) 在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 重试)在 System.Data.SqlClient.SqlConnection.Open() 在 Microsoft.TeamFoundation.Framework.Server.TeamFoundationSqlResourceComponent.Execute(ExecuteType executeType,CommandBehavior 行为)
【问题讨论】:
【参考方案1】:恢复到新的数据层(当您在服务器之间移动时调用它)需要遵循相当广泛的过程,以确保正确更新所有设置。该过程与您用于从一个 SQL Server 迁移到另一个 SQL Server 的过程相同。
这里解释了完整的过程:
http://msdn.microsoft.com/en-US/library/ms404869(v=vs.100).aspx【讨论】:
我会给出这个答案,因为这可能是我应该做的。我最终只是完全重新安装了 tfs,然后恢复了项目集合。幸运的是,我的设置并不涉及(没有共享点或报告服务)。谢谢。以上是关于TFS 2010 恢复数据库,TfsJobAgent 无法连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章