とあるDynamics365の8.2のDBを9.0へアップグレードしようとした(具体的には8.2の組織DBダンプを9.0用のSQLServerに入れ、展開マネージャーで組織のインポートをした)ところ、以下のようなエラーが発生。
14:10:34| Error| ID=fc04d08f-5b1e-e711-80c4-000c29026f03 の組織のアップグレードが次の例外で失敗しました: System.Exception: Error.ActionFailed Microsoft.Crm.Tools.Admin.UpgradeDatabaseAction ---> Microsoft.Crm.CrmException: Error in Action: Bin\Microsoft.Crm.DataUpgrade.dll:TrackCustomDatabaseObjects on attempt 3. System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 ---> System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.SqlServer.ConnectionInfo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 場所 Microsoft.Crm.DataUpgrade.DatabaseObjectChangeTracker.GenerateScriptForIndex(String tableName, String indexName, ISqlExecutionContext sqlContext) 場所 Microsoft.Crm.DataUpgrade.DatabaseObjectChangeTracker.InsertObjectTrackerTableInput(List`1 inputData, String tableName, ISqlExecutionContext sqlContext) 場所 Microsoft.Crm.DataUpgrade.DatabaseChangeTracker.TrackCustomDatabaseObjects() --- 内部例外スタック トレースの終わり --- 場所 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 場所 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 場所 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) 場所 Microsoft.Crm.Setup.Database.DllMethodAction.Execute(Guid organizationId, Nullable`1 operationType) 場所 Microsoft.Crm.Setup.Database.DllMethodAction.Execute(Guid organizationId) 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.<>c__DisplayClass85_1.<ExecuteReleases>b__0() 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.<>c__DisplayClass85_1.<ExecuteReleases>b__0() 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.ExecuteReleases(ReleaseInfo releaseInfo, Boolean isInstall) 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.installInternal(Boolean isInstall, Int32 languageCode) 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.<>c__DisplayClass92_0.<Install>b__0() 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Setup.Database.DatabaseInstaller.<>c__DisplayClass93_0.<Install>b__0() 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Tools.Admin.InstallDatabaseAction.Do(IDictionary parameters) 場所 Microsoft.Crm.Setup.Shared.CrmAction.ExecuteActionHelper(CrmAction action, IDictionary parameters, Boolean undo) --- 内部例外スタック トレースの終わり --- 場所 Microsoft.Crm.Setup.Shared.CrmAction.ExecuteActionHelper(CrmAction action, IDictionary parameters, Boolean undo) 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Setup.Shared.Installer.<>c__DisplayClass83_0.<DoAction>b__0() 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Setup.Shared.Installer.<>c__DisplayClass67_0.<Install>b__0() 場所 Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action) 場所 Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action) 場所 Microsoft.Crm.Tools.Admin.OrganizationOperation.Install(IDictionary stateSaver) 場所 Microsoft.Crm.Tools.Admin.OrganizationUpgrader.Install(IDictionary stateSaver) 場所 Microsoft.Crm.Tools.Admin.OrganizationOperation.Execute() 場所 Microsoft.Crm.Tools.Admin.OrganizationUpgrader.Execute() 場所 Microsoft.Crm.Tools.Admin.ImportOrganizationInstaller.ImportAndUpgrade(OrganizationInfo organizationInfo)
原因は以下の一文にある。
ファイルまたはアセンブリ 'Microsoft.SqlServer.ConnectionInfo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
これは、SQL システムの CLR 型(SQLSystemClrTypes)およびSQL Server 管理オブジェクト(SharedManagementObjects)が入っていないことが要因となっている。
解決方法
これら2つのモジュールはDynamics365の初回セットアップ時に必須となるので入れている筈なのだが、ログに記載されているのはバージョンが異なる。11.0.0.0、つまりSQLServer2012用のものが必要であることが肝。
当該バージョンのモジュールは以下からダウンロード可能である。
・SystemClrTypes
32bit http://go.microsoft.com/fwlink/?LinkID=239643&clcid=0x409
64bit http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x409
・SharedManagementObject
32bit http://go.microsoft.com/fwlink/?LinkID=239658&clcid=0x409
64bit http://go.microsoft.com/fwlink/?LinkID=239659&clcid=0x409
これらをインストールした後、再起動して再度実行したところ、エラーが解消された。
参考にした英語フォーラム: