テーブルおよびデータ エンティティに対する行バージョン変更追跡
Finance and Operations アプリには、行バージョン変更の追跡 と呼ばれる変更追跡機能オプションがあります。 このオプションを使用すると、データの差分同期化に Microsoft Dataverse を使用できます。 変更追跡は、データ アーカイブ、Synapse Analytics 統合、モバイル オフライン、関連検索など、複数の機能に対する前提条件です。 最終目標は、Dataverse 同期サービスに基づいて、既存する財務と運用のデータ同期フレームワークすべてを一つに統合することです。
行バージョン変更追跡機能の場合、タイプの新しい列、行バージョン、変更追跡が必要なデータ エンティティ内のすべてのテーブルに追加する必要があります。 行バージョン 列タイプの詳細については、行バージョン をご参照ください。 テーブルに rowversion 列を追加する方法については、テーブルの行バージョン変更追跡を有効化する を参照してください。
rowversion 列 は、テーブル行のバージョン スタンプを実行します。 SQL Server では、挿入操作または更新操作のごとに増分するデータベース レベルのカウンターが管理されます。 テーブル行への変更を検出するには、rowversion 列の現在の値を前の値と比較します。
機能に対して行バージョンの変更追跡を有効化する
Dynamics 365 Finance バージョン 10.0.34 以降では、ライセンス構成 ページで Sql 行バージョン変更追跡 の構成キーを有効にする必要があります (ライセンス構成のページ: (システム管理>設定>ライセンス>ライセンス構成))。 構成キーは、メンテナンス モードでのみ編集できます。 メンテナンス モードの詳細については メンテナンス モード を参照してください。 Sql 行バージョン変更追跡 の構成キーを有効にした後にメンテナンス モードを終了すると、データベースの同期によって、行バージョン変更追跡が有効になっているテーブル rowversion 列が追加されます。
注記
SQL Server では rowversion 列は読み取り専用です。 したがって、X++ Statementオブジェクトを使用して実行される直接SQLデータ操作言語 (DML) ステートメント (たとえば、次の例)は、この列を挿入または更新しようとすると壊れます。
INSERT INTO table2
SELECT * FROM table1
したがって、運用環境で構成キーを有効にする前に、サンドボックス環境で構成キーを有効にして検証してください。 万が一、直接SQL DMLステートメントが列を挿入または更新しようとした場合は、 SQL行バージョン変更追跡 問題が解決されるまで設定キーを削除しないでください。
この問題を解決するには、次の例のように、X++ コード内の直接SQL DMLステートメントを変更し、ソース テーブルと宛先テーブルの列リストを明示的に指定する必要があります。
INSERT INTO table2 (Column1, Column2)
SELECT ColumnA, ColumnB FROM table1
テーブルに対して行バージョンの変更追跡を有効化する
テーブルの行バージョン変更追跡を有効にするには、テーブルの 行のバージョン変更追跡を許可するプロパティを はい に設定します。 そしてテーブルには、SysRowVersion という名前の rowversion 型の新しいシステム フィールドが作成されます。
注記
バージョン 10.0.34 より前では、行バージョン変更追跡機能がプレビュー段階にありましたが、行バージョン列の名前は SysRowVersionNumber でした。 バージョン 10.0.34 では、SysRowVersionNumber 列が新しい SysRowVersion 列に置き換えられました。 SysRowVersionNumber 列は古い形式になります。 バージョン 10.0.39 では、これはすぐに使用できるテーブルのメタデータから削除されます。 SysRowVersionNumber 列には依存関係を作成しないでください。 コードが古い SysRowVersionNumber 列に依存している場合、実稼働インスタンスを 10.0.39 にアップグレードする前に、その依存関係を削除してテスト 10.0.39 を行う必要があります。
データ エンティティに対して行バージョンの変更追跡を有効化する
データ エンティティの行バージョン変更追跡を有効にするには、データ エンティティの 行のバージョン変更追跡を許可するプロパティを はい に設定します。 すべての既存のデータ エンティティが行バージョン変更追跡をサポートするように構成されているわけではありません。 主な制限要素は、データ エンティティの複雑さです。 データ エンティティで 行バージョン変更追跡を許可 プロパティが はい に設定されている場合、検証ルールがビルド時に評価されます。
次の表では、データ エンティティ検証ルールについて説明します。
独立系ソフトウェア ベンダー (ISV) やパートナーは、行のバージョン変更追跡を有効にする場合、常に新しいデータ エンティティを作成することをお勧めします。 このアプローチは、既存のカスタム拡張機能が検証ルールに違反するリスクを軽減するのに役立ちます。 カスタム拡張機能からの検証ルールの失敗は、下位互換性の破壊を防ぐために、エラーではなくビルド警告として表示されます。
データ エンティティで 行のバージョン変更追跡を許可する プロパティを はい に設定すると、基礎となるデータ ソースからの SysRowVersion 列がデータ エンティティ ビューに追加されます。
削除とクリーンアップの追跡
データ エンティティの行の削除は、AifChangeTrackingDeletedObject テーブルを使用して追跡されます。
削除追跡履歴のクリーンアップ という名前のシステム バッチ ジョブは、保管期間を超過した AifChangeTrackingDeletedObject テーブル内のレコードをクリーンアップします。 レコードは、タイムアウト基準に到達するまでバッチで削除されます。 既定では、毎日午前 1:00 にジョブが実行されます。 ただし、システム管理 > バッチ ジョブでジョブの繰り返しとジョブの頻度を構成できます。 現在、保管期間は 10 日です。
エンティティの変更を取得する
この変更追跡機能は Dataverse 変更追跡と完全に互換性があります。 ただし、一部の違いがあります。 たとえば、Dataverse テーブルに対して使用される 90 日の値ではなく最後のトークンが既定値 10 日以内にある場合、財務およびオペレーション アプリに対する変更が返されます。 詳細については、変更追跡を使用した外部システムとのデータの同期 を参照してください。