Dynamics 365 Finance + Operations セルフサービス環境へのアップグレードのトラブルシューティング
この記事では、Microsoft Dynamics AX 2012 から Dynamics 365 Finance + Operations (on-premises) セルフサービス環境へのアップグレードに関するトラブルシューティング ガイドを提供します。
シナリオ 1: 移行アプリでプロジェクト ID と環境 ID を入力するよう求めるメッセージが表示されます。
解決
アップグレードするユーザーはプロジェクトに参加し、ProjectOwner、EnvironmentAdmin、または OperationsAdmin のいずれかのロールを割り当てられる必要があります。
シナリオ 2: ソース データベース サーバーまたはターゲット データベース サーバーに対するアプリのデータベース接続の移行が失敗しました。
解決
移行アプリで、データ更新の準備: 環境の設定活動 手順の手順 1 を完了します。
シナリオ 3: いずれかのパブリケーションのスナップショットが失敗し、レプリケーション モニターでその失敗を追跡することができます。
解決
SQL Server レプリケーション モニターのエージェント タブで、失敗したパブリケーションを選択します。 スナップショット エージェントを選択したまま (または右クリックして)、エージェントの開始を選択して、スナップショットを生成します。
シナリオ 4: 移行アプリでステップの 1 つが失敗し、その手順を再実行する必要があります。
移行アプリでステップの 1 つが失敗し、その手順を再実行する必要がある場合、次の手順に従います。
移行アプリを閉じます。
移行アプリ フォルダーで、データ フォルダーを探します。
データ フォルダーで、ReplicationMenu.json ファイルを開きます。
ReplicationMenu.json ファイルでは、ID 順序が同じすべてのメニュー オプションが表示されます。 再実行するステップを見つけ、それからステータスの値を 0 に更新します。
重要
ReplicationMenu.json ファイルで何も変更しないでください。 また、ファイルを更新する場合は、移行アプリの変更が実行状態ではないことを確認します。
移行アプリを開き、手順を再実行します。
シナリオ 5: パブリケーション作成後、レプリケーション ジョブが失敗し、例外が発生します。
パブリケーション作成後、レプリケーション ジョブが失敗し、次の例外が発生します。
例外1
プリンシパル 「dbo」 は存在しておらず、このタイプのプリンシパルはアクセス許可を借用できないかまたはアクセス許可がないために、データベース プリンシパルとして実行することができません。 (Source: MSSQLServer, Error number: 15517)
ヘルプの取得:http://help/15517
例外2
このプロセスでは、「replicationsrv\MSSQLSERVER2016」 に対して 「sp_replcmds」 が実行できませんでした。 (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)
ヘルプの取得:http://help/MSSQL_REPL20011
プリンシパル 「dbo」 は存在しておらず、このタイプのプリンシパルはアクセス許可を借用できないかまたはアクセス許可がないために、データベース プリンシパルとして実行することができません。 (Source: MSSQLServer, Error number: 15517)
ヘルプの取得:http://help/15517
解決
SQL Server Management Studio (SSMS) で、クエリ ウィンドウを開き、ソース データベースに接続して、次の SQL コマンドを実行します。
EXEC sp_changedbowner 'sa'
シナリオ 6: Microsoft Dynamics Lifecycle Service のステータスは「失敗」ですが、移行アプリでデータ アップグレード トリガーは成功しています。
解決
移行アプリで 'ds' オプションを実行します。 このオプションは、ジョブのステータス Microsoft Dynamics Lifecycle Services環境、およびすべてのステップのデータ アップグレード ステータス手順読み取ります。
メモ
データ アップグレードのステータスとLifecycle Services環境 ステータスの両方が "<
シナリオ 7: 手動で実行した失敗したステップをスキップし、他の手順に進みます。
手動で実行した失敗したステップをスキップし、他の手順に進むには、次の手順に従います。
移行アプリを閉じます。
移行アプリ フォルダーで、データ フォルダーを探します。
データ フォルダーで、ReplicationMenu.json ファイルを開きます。
ReplicationMenu.json ファイルでは、ID 順序が同じすべてのメニュー オプションが表示されます。 再実行するステップを見つけ、ステータスの値を 1 に更新します。 この方法で、ステップを完了としてマークします。
重要
ReplicationMenu.json ファイルで何も変更しないでください。 また、ファイルを更新する場合は、移行アプリの変更が実行状態ではないことを確認します。
シナリオ 8: コンソール アプリの古いバージョンから新しいバージョンに移行したいとします。
コンソール アプリの古いバージョンから新しいバージョンに移行するには、次の手順に従います。
- コンソール アプリケーションの最新バージョンをLifecycle Services。
- コンソール アプリの古いバージョンから paramsdata.txt および /Data/ReplicationMenu.json ファイルを取得し、新しいバージョンのコンソール アプリで同じパスに設定します。
- アプリを再実行します。
シナリオ 9: すべてのパブリケーションのレプリケーション ステータスが 2 時間以上も「スナップショットの終了の待機」と表示されています。
解決
レプリケーション モニターで、パブリケーションを選択したまま (または右クリックして)、サブスクリプションの再初期化を選択します。
シナリオ 10: データ アップグレードを再開する必要があります。
解決
コンソール アプリでデータ アップグレード ステータスが更新されていない可能性があります。
データ アップグレードを再開するには、次の手順に従います。
- コンソール アプリのステータスを確認するには、ヘルプ オプションを使用してください。 このオプションには、すべてのメニュー オプションが一覧表示され、現在の状態が表示されます。
- データ レプリケーションおよびアップグレードの実施 のステップ 10 のステータスが成功の場合、移行アプリで 'ds' オプションを実行します。 このオプションにより、データ アップグレード ステータスが更新されます。
オプション の が実行された後に、"Lifecycle Services環境" ステータスと "データ アップグレード" ステータスの2つのタイプが表示されます。
- ケース1: Lifecycle Services環境 ステータスが "Failed "、データ アップグレードの最後の 手順 が "Failed " の場合、手順10には Resume オプションが表示されます。
- ケース2: Lifecycle Services環境 ステータスが "Failed "、データ アップグレードの最後の 手順 が完了である場合、手順10には Resume オプションが表示されます。
- ケース3: Lifecycle Services環境 ステータスがDeployed であり、データ アップグレードの最後の 手順 が完了 、 手順10が表示 場合。
- ケース4: Lifecycle Services環境 ステータスがDeployed 、データ アップグレードの最後の 手順 が [処理状況 ]、手順10の場合は、データ アップグレード ジョブがバックグラウンドで実行 インスタンスを示します。
シナリオ 11: パブリケーションの作成後にスナップショットの作成に失敗し、エラーが発生します。
パブリケーションの作成後にスナップショットの作成に失敗し、次のエラーがスローされます。
エラー メッセージ:
Source: Microsoft.SqlServer.Smo
Target Site: Void PrefetchObjectsImpl(System.Type, Microsoft.SqlServer.Management.Smo.ScriptingPreferences)
Message: Prefetch objects failed for Database 'AxDB_ASIA'.
Stack: at Microsoft.SqlServer.Management.Smo.Database.PrefetchObjectsImpl(Type objectType, ScriptingPreferences scriptingPreferences)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.ObjectPrefetchControl.DoPrefetch(Database database)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.PrefetchObjects(ObjectPrefetchControl[] objectPrefetchControls)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoPrefetchWithRetry()
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoScripting()
at Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.DoScripting()
at Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.GenerateSnapshot()
at Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()
at Microsoft.SqlServer.Replication.AgentCore.Run() (Source: Microsoft.SqlServer.Smo, Error number: 0)
解決
レプリケーション モニターで、失敗したパブリケーションを選択したまま (または右クリックして)、スナップショットの生成を選択します。
シナリオ 12: データ アップグレード PreSync プロセスと PostSync プロセスの時間が長く、どのプロセスまたはジョブに時間がかかっているのを判断する必要があります。
解決
ReleaseUpgradeDBフレームワークは、 ReleaseUpdateScriptsLog(テーブル) の各スクリプトの実行を します。 データ アップグレード プロセスのパフォーマンスを調整するときに、実行されるスクリプトの存続期間を監視できます。 この表では、最も長く実行されるプロセスまたはジョブを簡単に識別できます。 ターゲットAxDBで次のクエリのいくつかを使用して、進捗状況を確認できます。
実行中のプロセスの確認
AxDBで実行されているプロセスを確認するには、次のクエリを使用します。
SELECT SPID = er.session_id
,STATUS = ses.STATUS
,[Login] = ses.login_name
,Host = ses.host_name
,BlkBy = er.blocking_session_id
,DBName = DB_Name(er.database_id)
,CommandType = er.command
,ObjectName = OBJECT_NAME(st.objectid)
,CPUTime = er.cpu_time
,StartTime = er.start_time
,TimeElapsed = CAST(GETDATE() - er.start_time AS TIME)
,SQLStatement = st.text
FROM sys.dm_exec_requests er
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
LEFT JOIN sys.dm_exec_sessions ses
ON ses.session_id = er.session_id
WHERE st.text IS NOT NULL
dbupgradeステータスの確認
データ アップグレード サービスのステータスを確認するには、次のクエリを使用します。
SELECT StartTime,EndTime,Steps,SubSteps,STATUS FROM [DBUPGRADE].[DATAUPGRADESTATUS]
ORDER BY EndTime DESC
バッチ ジョブ関連の詳細の確認
バッチ ジョブ関連の詳細を確認するには、次のクエリを使用します。
select RECID, CAPTION, * from batchjob where STATUS=2
select * from batch where BATCHJOBID = _jobid_ and status=2
select serverid, status, caption, datediff(mi, startdatetime, ENDDATETIME), startdatetime, ENDDATETIME ,* from batchhistory where Batchjobid = _jobid_
select serverid, status, caption, Classnumber, datediff(mi, startdatetime, ENDDATETIME), _timetakeninmin, startdatetime, ENDDATETIME ,* from batch where batchjobid = _jobid_
select * from CLASSIDTABLE where ID in (select distinct classnumber from batch where batchjobid= _jobid_ )