2

私は単なる SQL の専門家なので、これがばかげた質問であるか、間違った場所にあることを許してください。

本番環境から下位環境へのデータ更新に関する私の指示では、AX クライアントに移動し、ポイント クリック マウス アクションを使用して 8 つのテーブルをファイルにバックアップする必要があります。

  • 従業員テーブル
  • SysUserProfiles
  • システムユーザー情報
  • SysCompanyUserInfo
  • DirPartyTable
  • 従業員タイプ
  • ユーザーグループリスト
  • ユーザー情報

次に、AOS を停止し、最善を尽くします。SQL を使用して 31 個のテーブルから安全な場所にデータをコピーし、データベースを復元し、安全な場所から 31 個のテーブルにデータをコピーして戻します。次に、AOS を開始し、辞書を同期し、最後に AX クライアントを介して 8 つのテーブルをインポートします (すべてポイント クリックのように)。

コマンドラインから同期できます。コマンドラインからSQLを介して31個のテーブルを保持できます。コマンドラインから正しい順序で AOS を開始および停止できます。しかし、この AX Export/Import Tables の手順を実行することはできません。また、3 つの環境では、ポイントをクリックするだけでイライラします。

質問、最後に:クライアントのエクスポート/インポートで何が起こるか、もしあれば、他の 31 のような 8 つのテーブルを処理するだけではカバーされないでしょうか? それは辞書の同期では修正されないものですか?それが何をするかもしれないかを伝える方法はありますか?X++ でエクスポート/インポートをコーディングする簡単な方法はありますか? 私はすでに sysStartupCmd と ax32.exe -StartupCmd から何かを発生させる方法をある程度把握していますが、正直なところ、私の母国語である SQL は私にとってはるかに簡単です。

読んでくれてありがとう!

4

1 に答える 1

2

あなたが説明したプロセスは、更新プロセスとしてはやや珍しいように見えますが、特定のコンテキストでは理にかなっています。

コメントで述べたように、基本的に下位環境のデータを保持しています。コメントで説明したプロセスは、新しいデータを保持しながら、既存のレコードを古いデータで更新します。SQL 経由でこれを試みたい場合は、アップサートとして記述する必要があります (既存のレコードが更新されている間に新しいレコードが作成される可能性があるため)。テーブルはすべて何らかの形でユーザーに関連しているように見えるため、特に SOX 規制環境では珍しいことではありませんが、本番環境から下位環境に異なるユーザー セットが存在する場合、このプロセスは理にかなっています。この状況では、データ ディクショナリの同期は実際には何もしません。基本的には、SQL のテーブル スキーマを更新して、AX に格納されている定義と一致させるだけです。そのスキーマは変更されていないため、何も起こりません。

あなたが言及した他の(31)テーブルでは、より多くのテーブル置換を行っているように聞こえます(したがって、新しいデータを挿入する前にテーブルが切り捨てられるか、復元プロセスからのデータが破棄/無視されます)。そのため、プロセスが 8 つのユーザー テーブルとは異なる場合があります。

いずれにせよ、あなたの質問に直接答えるために、これを自動化できるすぐに使えるプロセスを知りません. フラグは、これStartupCmd=を探す論理的な場所ですが、使用できる唯一のインポート コマンドは XPO (コード) ファイル用です。SysStartupCmdプロセスを自動化する必要がある場合は、通常は手動で行うのと同じ関数を拡張して呼び出す新しいクラスを作成する必要があります。これは難しいことではありませんが、使用するコマンドとパラメーターを特定するには少し調査が必要です。クラスを見て、SysStartupCmdAOTImportそれがどのように構造化されるかを理解することができます。インポート プロセスはSysDataImportクラスから制御されているようです。それを見て、ユーザー入力を模倣するか、プロセスが何をするかを正確に確認してください。

代替の (自動化された) プロセスを探している場合は、環境のデータ更新を行うときに考慮してください (毎日更新する環境、月に数回更新する環境、必要に応じて更新する環境など、すべて100% 自動化されています)、バックアップの復元後に必要なレコードを更新または作成する SQL スクリプトを実行するだけです。値は基本的にスクリプトにハードコードされていますが、変更されないため大した問題ではありません。あなたのものと比較したこの手法の欠点は、非実稼働環境へのアクセスのみを必要とするユーザーがいる場合、最初に実稼働環境 (無効) にいる必要があり、次にスクリプトが次回必要な値を更新することです。ターゲット環境が更新されます。さらに、

于 2016-01-28T13:21:18.127 に答える