Dynamics 365 CE On Premises异步服务因找不到Datacenter对象报SQL异常崩溃
问题背景
- 客户部署的是Dynamics 365 CE本地部署版V9.0.4xxx,属于开发环境,采用单CRM服务器安装架构,通过ADFS实现基于声明的身份验证,数据库和报表服务部署在另一台独立服务器上。
问题现象
- 当前环境出现性能问题,排查后发现CRM异步服务(Async Service)会出现崩溃,最终记录的核心错误信息如下:
"The locator service failed to connect to the configuration database (MSCRM_CONFIG). The error was: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Datacenter'."
排查过程
- 启用CRM跟踪日志(Trace Logs)后确认,异步服务尝试在数据库中查询
Datacenter对象,但该对象实际不存在 - 排查多个其他同类型环境,所有实例中均找不到对应的表、视图或同义词
- 互联网检索后发现大量用户遇到过相同问题,但未找到公开可用的解决方案
- 目前暂定的最终尝试方案是升级到Dynamics 365 CE最新版本9.1.3.11,假设该问题为产品自身缺陷,期望在新版本中已得到修复
如果有遇到过相同问题或知晓对应解决方案的人员,恳请告知,非常感谢。
完整错误堆栈
The locator service failed to connect to the configuration database (MSCRM_CONFIG). The error was: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Datacenter'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at Microsoft.Crm.CrmDbConnection.InternalExecuteWithRetry[TResult](Func`1 ExecuteMethod, IDbCommand command) at Microsoft.Crm.CrmDbConnection.<>c_DisplayClass104_0.<InternalExecuteReader>b_0() at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func`1 func) at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func`1 func) at Microsoft.Crm.CrmDbConnection.InternalExecuteReader(IDbCommand command, Nullable`1 commandBehavior, Int32 sourceLineNumber, String memberName, String sourceFilePath) at Microsoft.Crm.CrmDbConnection.ExecuteReader(IDbCommand command, Boolean impersonate, Int32 sourceLineNumber, String memberName, String sourceFilePath) at Microsoft.Crm.SharedDatabase.DatabaseService.ExecuteBaseReader(CrmDbConnection connection, IDbCommand command, String[] columns, IDictionary collectionToFill) ClientConnectionId:ef125c05-864e-4598-8ba5-c3f71bad613e Error Number:208,State:1,Class:16.
跟踪日志错误截图

内容的提问来源于stack exchange,提问作者S M Kamran
相关产品推荐
相关产品推荐

