次の方法で共有


Dynamics 365 Finance + Operations セルフサービス環境へのアップグレードのトラブルシューティング

この記事では、Microsoft Dynamics AX 2012 から Dynamics 365 Finance + Operations (on-premises) セルフサービス環境へのアップグレードに関するトラブルシューティング ガイドを提供します。

シナリオ 1: 移行アプリでプロジェクト ID と環境 ID を入力するよう求めるメッセージが表示されます。

ソリューション

アップグレードするユーザーはプロジェクトに参加し、ProjectOwnerEnvironmentAdmin、または OperationsAdmin のいずれかのロールを割り当てられる必要があります。

シナリオ 2: ソース データベース サーバーまたはターゲット データベース サーバーに対するアプリのデータベース接続の移行が失敗しました。

ソリューション

移行アプリで、データ更新の準備: 環境の設定活動 手順の手順 1 を完了します。

シナリオ 3: いずれかのパブリケーションのスナップショットが失敗し、レプリケーション モニターでその失敗を追跡することができます。

ソリューション

SQL Server レプリケーション モニターのエージェント タブで、失敗したパブリケーションを選択します。 スナップショット エージェントを選択したまま (または右クリックして)、エージェントの開始を選択して、スナップショットを生成します。

シナリオ 4: 移行アプリでステップの 1 つが失敗し、その手順を再実行する必要があります。

移行アプリでステップの 1 つが失敗し、その手順を再実行する必要がある場合、次の手順に従います。

  1. 移行アプリを閉じます。

  2. 移行アプリ フォルダーで、データ フォルダーを探します。

  3. データ フォルダーで、ReplicationMenu.json ファイルを開きます。

  4. ReplicationMenu.json ファイルでは、ID 順序が同じすべてのメニュー オプションが表示されます。 再実行するステップを見つけ、それからステータスの値を 0 に更新します。

    重要

    ReplicationMenu.json ファイルで何も変更しないでください。 また、ファイルを更新する場合は、移行アプリの変更が実行状態ではないことを確認します。

  5. 移行アプリを開き、手順を再実行します。

シナリオ 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 環境のステータスが両方とも失敗の場合、データ レプリケーションおよびアップグレードの実施 の手順のステップ 10 のステータスは再開に更新されます。 その後、アップグレード プロセスが失敗した時点から操作を再開できます。

シナリオ 7: 手動で実行した失敗したステップをスキップし、他の手順に進みます。

手動で実行した失敗したステップをスキップし、他の手順に進むには、次の手順に従います。

  1. 移行アプリを閉じます。

  2. 移行アプリ フォルダーで、データ フォルダーを探します。

  3. データ フォルダーで、ReplicationMenu.json ファイルを開きます。

  4. ReplicationMenu.json ファイルでは、ID 順序が同じすべてのメニュー オプションが表示されます。 再実行するステップを見つけ、ステータスの値を 1 に更新します。 この方法で、ステップを完了としてマークします。

    重要

    ReplicationMenu.json ファイルで何も変更しないでください。 また、ファイルを更新する場合は、移行アプリの変更が実行状態ではないことを確認します。

シナリオ 8: コンソール アプリの古いバージョンから新しいバージョンに移行したいとします。

コンソール アプリの古いバージョンから新しいバージョンに移行するには、次の手順に従います。

  1. コンソール アプリの最新バージョンを Lifecycle Services からダウンロードします。
  2. コンソール アプリの古いバージョンから paramsdata.txt および /Data/ReplicationMenu.json ファイルを取得し、新しいバージョンのコンソール アプリで同じパスに設定します。
  3. アプリを再実行します。

シナリオ 9: すべてのパブリケーションのレプリケーション ステータスが 2 時間以上も「スナップショットの終了の待機」と表示されています。

ソリューション

レプリケーション モニターで、パブリケーションを選択したまま (または右クリックして)、サブスクリプションの再初期化を選択します。

シナリオ 10: データ アップグレードを再開する必要があります。

ソリューション

コンソール アプリでデータ アップグレード ステータスが更新されていない可能性があります。

データ アップグレードを再開するには、次の手順に従います。

  1. コンソール アプリのステータスを確認するには、ヘルプ オプションを使用してください。 このオプションには、すべてのメニュー オプションが一覧表示され、現在の状態が表示されます。
  2. データ レプリケーションおよびアップグレードの実施 のステップ 10 のステータスが成功の場合、移行アプリで 'ds' オプションを実行します。 このオプションにより、データ アップグレード ステータスが更新されます。

'ds' オプションの実行後、Lifecycle Services 環境の状態とデータ アップグレード ステータスの 2 つのステータスが一覧表示されます。

  • ケース 1: Lifecycle Services 環境の状態が失敗で、データ アップグレードの最後のステップが失敗の場合、ステップ 10 に再開オプションが表示されます。
  • ケース 2: Lifecycle Services 環境の状態が失敗で、データ アップグレードの最後のステップが完了の場合、ステップ 10 に再開オプションが表示されます。
  • ケース 3: Lifecycle Services 環境の状態が配置済みで、データ アップグレードの最後のステップが完了の場合、ステップ 10 には成功と表示されます。
  • ケース 4: Lifecycle Services 環境ステータスが配置済で、データ アップグレードの最後のステップが処理中の場合、データ アップグレード ジョブはバックグラウンドで実行されるので、ステップ 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_ )

シナリオ13: スナップショットがプッシュされた後、レプリケーションが失敗し、レプリケートされる LOB データの長さが、構成された最大値 65536 を超えています。

出版物が作成され、スナップショットがプッシュされた後、ログ リーダーは特定のテーブルで例外を報告します。

例外

次は、エラーの例です。

[Microsoft][SQL Server Native Client 11.0][SQL Server]Length of LOB data (101958) to be replicated exceeds configured maximum 65536.
Use the stored procedure sp_configure to increase the configured maximum value for max text repl size option, which defaults to 65536.
A configured value of -1 indicates no limit, other that the limit imposed by the data type.
The SQL statement was: "UPDATE SYSLASTVALUE SET VALUE=?,RECVERSION=? WHERE ((((((((PARTITION=?) AND (USERID=?)) AND (RECORDTYPE=?)) AND (ELEMENTNAME=?)) AND (DESIGNNAME=?)) AND (ISKERNEL=?)) AND (COMPANY=?)) AND (RECVERSION=?))""

ソリューション

エラー メッセージに示されているように、sp_configure を実行して値を変更します

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

EXECUTE sp_configure 'max text repl size', -1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

ログ リーダー エージェント および配送 エージェント を再起動します (即時の更新を使用しない場合)。

  • これは、SQL Server エージェント またはレプリケーション モニターを使用して実行できます。
  • T-SQLを使用する (プッシュ定期購読の場合など)。
--Edit job name below as needed
exec sp_restart_job @job_name = 'AX_PUB_PkTable_x';

詳細については、サーバー構成: テキスト レプリケーションの最大サイズ を参照してください