データベース移動操作は、データ アプリケーション ライフサイクル管理 (DataALM) の一部として使用できるセルフサービス アクションのスイートです。 「ゴールデン コンフィギュレーション」は、開発者環境が構成ストアとして使用されている Microsoft Dynamics エコシステムにおける顧客とパートナーの間での一般的な方法を示します。 このアプローチでは、実装プロジェクトは、最終的なグローバルおよび会社固有の設定をデータベースに格納します。この設定は、後で会議室パイロット、モック ゴーライフ、および go-lives のベースラインになる可能性があります。 このチュートリアルでは、ゴールデン構成データベースを準備し、ターゲット ユーザー受け入れテスト (UAT) 環境に取り込む方法を示します。
このチュートリアルでは、以下の内容を学習します。
- Microsoft Azure SQL データベースのゴールデン構成データベースを準備する。
- ターゲット UAT 環境のインポートを実行する。
- 運用環境に UAT 環境をコピーする。
このシナリオの一例として、本番運用開始に至っていないお客様は、会議室でのパイロットテスト、模擬運用開始、または本番運用開始に向けて準備を進めています。 このシナリオでは、開発者環境からのベースライン ゴールド ・ データベースを UAT 環境に昇格し、最終的を運用環境をサポートすることをします。
前提条件
このチュートリアルを完了するには、ゴールデン構成データベースとしてキュレーションされたデータベースと共にデプロイされる開発環境が必要です。 少なくとも 1 つの標準 UAT 環境が展開されていることと、必要に応じて、運用環境が 1 つ以上必要です。
開発環境は、ターゲット UAT 環境と同じアプリケーション バージョンを実行している必要があります。 加えて、開発者環境のプラットフォーム バージョンは、ターゲット UAT 環境のプラットフォーム バージョン以前でなければなりません。
始める前の準備
サポートされる SQL Server の照合順序
クラウド内のデータベースでサポートされている照合順序は 、SQL_Latin1_General_CP1_CI_ASのみです。 開発環境の Microsoft SQL Server とデータベース照合順序がこの値に設定されていることを確認してください。 また、サンドボックスに発行するすべての構成環境で、この照合順序が使用されていることを確認します。
暗号化されたフィールドの値を文書化
暗号化された値と環境固有の値を新しい環境にインポートすることはできません。 インポートが完了したら、ターゲット環境のソース環境からデータを再入力する必要があります。
データ暗号化に使用される証明書に関連する技術的な制限があるため、データベース内の暗号化されたフィールドに格納されている値は、そのデータベースが新しい環境にインポートされた後は読み取りできません。 そのため、インポート後に、暗号化されたフィールドに格納されている値を手動で削除して再入力する必要があります。 インポート後に暗号化されたフィールドに入力された新しい値は読み取り可能です。 次のフィールドが影響されます。 フィールド名は Table.Field 形式で指定されます。
| フィールド名 | 値を設定する場所 |
|---|---|
| CreditCardAccountSetup.SecureMerchantProperties | 売掛金勘定>支払設定>支払サービスを選択します。 |
| ExchangeRateProviderConfigurationDetails.Value | 総勘定元帳>通貨>為替レート プロバイダーを構成するを選択します。 |
| FiscalEstablishment_BR.ConsumerEFDocCsc | 組織管理>会計施設>会計施設の順に選択します。 |
| FiscalEstablishmentStaging.CSC | Data Import/Export Framework (DIXF) はこのフィールドを使用します。 |
| HcmPersonIdentificationNumber.PersonIdentificationNumber | 人事管理>作業者>作業者の順に選択します。 ワーカータブの、個人情報グループで、ID 番号を選択します。 |
| HcmWorkerActionHire.PersonIdentificationNumber | このフィールドは、Microsoft Dynamics AX 7.0 以降 (2016 年 2 月) は廃止されました。 これは以前、すべての作業者アクション ページ (人事管理>作業者>アクション>すべての作業者アクション) に表示されていました。 |
| SysEmailSMPTPassword.Password | システム管理>電子メール>電子メール パラメーターの順に選択します。 |
| SysOAuthUserTokens.EncryptedAccessToken | Application Object Server (AOS) では、このフィールドが内部的に使用されます。 これは無視できます。 |
| SysOAuthUserTokens.EncryptedRefreshToken | AOS では、このフィールドが内部的に使用されます。 これは無視できます。 |
コマース コンポーネントを実行している場合、暗号化された値および環境固有の値を文書化する
次のページの値は、環境固有またはデータベースで暗号化されています。 したがって、インポートされた値はすべて正しくありません。
- 支払サービス (売掛金勘定>支払設定>支払サービス) に移動します
- ハードウェア プロファイル (小売りとコマース>チャネル設定>POS 設定>POS プロファイル>ハードウェア プロファイル)
ソース データベースのコピーを作成します。
SSMS を使用してソース データベースをバックアップします。 ソース データベースを右クリックし、[ タスク>バックアップ] を選択します。 バックアップが完了したら、SSMS ナビゲーション ウィンドウで [ データベース ] フォルダーを右クリックし、[データベースの 復元] を選択します。 作成したバックアップを選択しますが、ターゲット データベースには AXDB_CopyForExport などの新しい名前を付けます。
データベースの準備
次のスクリプトを、前のセクションで作成した AxDB_CopyForExport データベースに対して実行します。 このスクリプトは、次の変更を行います。
- データベースが Azure ベースであることをアプリケーションに通知する SysGlobalConfiguration フラグを設定します。
- XU_DisableEnableNonClusteredIndexes プロシージャ内の tempDB への参照を削除します。 Azure SQL データベースでは、tempDB への参照は許可されません。 データベース同期プロセスは後で照会を再作成します。
- Azure SQL データベースでは Microsoft Windows ユーザーが許可されていないため、ユーザーを削除します。 他のユーザーがターゲット サーバー上の適切なサインインに正しくリンクされるように、後で他のユーザーを再作成する必要があります。
- 暗号化されたハードウェア プロファイルのマーチャント プロパティをクリアします。
データベースのエクスポートとインポートに成功するには、これらすべての変更が必要です。
update sysglobalconfiguration
set value = 'SQLAZURE'
where name = 'BACKENDDB'
update sysglobalconfiguration
set value = 1
where name = 'TEMPTABLEINAXDB'
drop procedure if exists XU_DisableEnableNonClusteredIndexes
drop procedure if exists SP_ConfigureTablesForChangeTracking
drop procedure if exists SP_ConfigureTablesForChangeTracking_V2
drop schema [NT AUTHORITY\NETWORK SERVICE]
drop user [NT AUTHORITY\NETWORK SERVICE]
drop user axdbadmin
drop user axdeployuser
drop user axmrruntimeuser
drop user axretaildatasyncuser
drop user axretailruntimeuser
drop user axdeployextuser
--Tidy up the batch server config from the previous environment
DELETE FROM SYSSERVERCONFIG
--Tidy up server sessions from the previous environment
DELETE FROM SYSSERVERSESSIONS
--Tidy up printers from the previous environment
DELETE FROM SYSCORPNETPRINTERS
--Tidy up client sessions from the previous environment
DELETE FROM SYSCLIENTSESSIONS
--Tidy up batch sessions from the previous environment
DELETE FROM BATCHSERVERCONFIG
--Tidy up batch server to batch group relation table
DELETE FROM BATCHSERVERGROUP
-- Clear encrypted hardware profile merchant properties
update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null
SQL Server からデータベースをエクスポート
sqlpackage .NET Core for Windows を Get sqlpackage .NET Core for Windows からダウンロードします。 コマンド プロンプト ウィンドウを開き、sqlpackage .NET Core フォルダーから次のコマンドを実行します。
cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\
SqlPackage.exe /a:export /ssn:localhost /sdn:<database to export> /tf:D:\Exportedbacpac\<filename>.bacpac /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false /SourceTrustServerCertificate:True
パラメータの説明を以下に示します。
- ssn(ソース サーバー名) – エクスポートする SQL Server の名前。 この記事では、名前は常に localhost です。
- sdn(ソース データベース名) – エクスポートするデータベースの名前。
- tf(ターゲット ファイル) – エクスポートするファイルのパスと名前。 フォルダーはすでに存在しているはずですが、エクスポート プロセスによってファイルが作成されます。
データベースのインポート
前の手順で作成した .bacpac ファイルを、Lifecycle Services プロジェクトのアセット ライブラリの [データベース バックアップ ] セクションにアップロードします。 次に、インポートを開始します。 対象となる UAT 環境のデータベースは、ゴールデン構成データベースによって上書きされます。
Note
特定の要素は、データベースのインポート 手順の一部としてコピーされません。 ゴールデン構成シナリオでは、この制限は、メール アドレスや印刷管理のセットアップなどに影響します。 これらの設定は、後で説明する手順のマスター データ移行の一部として設定することをお勧めします。 これらの設定は、ゴールデン構成データベースの一部にすることはできません。
開発環境から標準ユーザー承認テスト (UAT) まで準備されたデータベース、または UAT 環境から前回エクスポートしたデータベースをインポートするには、次のステップに従います。
- ターゲット サンドボックスの 環境詳細 ページを開き、 メニュー オプションから 管理>データベースの移動 を選択します。
- データベースのインポートを選択し、資産ライブラリからソース データベースのバックアップ (.bacpac形式) ファイルを選択します。
- 警告に注意してください。 バックアップ ファイルからクリーンアップされたデータ要素の一覧を確認します。
- インポート操作をすぐに開始します。
Note
管理者ユーザー、およびその他の内部サービス ユーザー アカウントを除くすべてのユーザーはインポート後に使用できなくなります。 そのため、管理者ユーザーは他のユーザーがシステムに復帰する前にデータの削除や難読化することができます。
データベース バックアップ (.bacpac) ファイルをダウンロードした後、データベースを開発環境にインポートするには、レベル 1 環境の手動インポート操作の開始が可能です。 データベースをインポートするときは、これらのガイドラインに従うことお勧めします。
- 必要な場合は、後で戻すことができるように、既存の AxDB データベースのコピーを保持します。
- AxDB_fromProd などの新しい名前の下に新しいデータベースをインポートします。
最良のパフォーマンスを確保するためには、 *.bacpac ファイルをインポート元のコンピューターにコピーします。 sqlpackage .NET Core for Windows を Get sqlpackage .NET Core for Windows からダウンロードします。 コマンド プロンプト ウィンドウを開き、sqlpackage .NET Core フォルダーから次のコマンドを実行します。
SqlPackage.exe /a:import /sf:D:\Exportedbacpac\my.bacpac /tsn:localhost /tdn:<target database name> /p:CommandTimeout=1200
パラメータの説明を以下に示します。
- tsn (ターゲット サーバー名) – インポートする Microsoft SQL Server インスタンスの名前。
- tdn(ターゲット データベース名) – インポートするデータベースの名前。 データベースが既に存在していてはいけません。
- sf(ソース ファイル) – インポートするファイルのパスと名前。
Note
インポート中に、ユーザー名およびパスワードは必要ありません。 既定では、SQL Server は、現在サインインしているユーザーに対して Microsoft Windows 認証を使用します。
レベル 1 の環境に手動インポート処理を実行する方法については、データベースのインポート を参照してください。
マスター データを移行します。
UAT 環境にゴールデン コンフィギュレーションが適用され、マスター データの移行を開始することができます。 このデータ移行は、 データ エンティティを使用して実行できます。 トラブルシューティングのために UAT 環境のデータベースにアクセスできるため、UAT 環境を運用環境にコピーする前に、データ移行アクティビティを完了してください。
Important
Azure BLOB ストレージに格納されているファイルは、次の手順では UAT から運用環境にコピーされません。 この制限には、ドキュメントの添付ファイルとカスタム Microsoft Office テンプレートが含まれます。 Go-Live で添付ファイルまたはカスタム テンプレートが必要な場合は、それらの項目を運用環境に直接インポートします。
サンドボックス データベースを運用環境にコピーします。
モック Go-Live または実際の Go-Live を行う準備ができたら、運用環境に UAT 環境をコピーすることができます。 このプロセスは、切替と呼ばれます。 実際のライブ配信の前に、カットオーバーを複数回行います。 このようにして、プロセスの各ステップの詳細な時間見積を取得できます。
運用環境の環境タイプを決定し、それに応じて関連する手順を実行します。
セルフ サービス
- ライフサイクル サービスで、運用環境の 詳細を 開き、[環境] ページを読み込 みます。
- 管理メニューで、データベースの移動を選択します。
- 操作のオプションで、データベースの更新を選択します。
- ソース環境で、ゴールデン構成があるサンドボックスを選択します。 このタイプの操作については、データベース ページの更新 にある重要な手順に注意してください。
- 操作が運用データベースを上書きすることを理解していることを確認するには、このチェック ボックスをオンにします。 要求を送信すると工程がすぐに開始されます。
Microsoft マネージド
ライフサイクル サービスのプロジェクト ホーム ページで、[ サービス要求] を選択します。
サービス要求で [追加] を選択し、[サンドボックスから本番環境へ] を選択します。
サンドボックスから本番環境へ、次の手順に従います。
- [ソース環境名] で、データベースのコピー元のサンドボックス環境を選択します。
- 優先ダウンタイムの開始日と優先ダウンタイムの終了日を設定します。 サイクル終了日は、サイクル開始日の少なくとも 4 時間後でなければなりません。 リソースを使用して要求を実行できるようにするには、希望するダウンタイム期間の少なくとも 24 時間前に要求を送信してください。
- 下部にあるチェック ボックスをオンにして、条項に同意します。
Important
データベースの更新ごとに、復元ポイントの ポイントインタイム復元 チェーンをリセットする新しいデータベースが作成されます。
環境の固有の設定を変更
更新が完了したら、ライフサイクル サービスの [サインオフ ] ボタンを使用して操作を終了します。 その後、環境固有の設定のコンフィギュレーションを開始できます。
まず、ライフサイクル サービスの [環境の詳細] ページにある管理者アカウントを使用して 、環境 にサインインします。 再設定の標準的な領域をいくつか次に示します。 設定およびインストールされている独立系ソフトウェア ベンダー (ISV) ソリューションによっては、追加の再設定が必要です。
- システム管理>設定>バッチ グループ: 必要なバッチ サーバー グループにさまざまな AOS インスタンスを追加します。
- システム管理>設定>エンティティ店舗: Microsoft Power BI レポートに必要なさまざまなエンティティを更新します。
- システム管理>>タスク ガイドのライフサイクル サービス ヘルプ構成に環境を再接続します。
- システム管理>設定>電子メール>パラメータを電子メールで送信: UAT 環境内で電子メールを使用する場合は、簡易メール転送プロトコル (SMTP) の設定を入力します。
- システム管理>設定>移行の設定>Azure storage アカウント接続文字列: ストレージの接続文字列を入力します。
- ドキュメントの接続 タブの >>システムパラメータ: に、Azure Key と アプリケーションの秘密情報を入力します。
- システム管理>照会>バッチ ジョブ: UAT 環境で実行するジョブを選択し、ステータスを 待機中 に更新します。
Note
ベスト プラクティスとして、管理者アカウントを使用して、繰り返し実行されるすべてのミッション クリティカルなバッチ ジョブを作成して実行します。
erp@customer.comなどの汎用ユーザーを使用します。 管理者を特定の従業員の Microsoft Entra アカウントにリンクしないでください。これは、従業員が退職した場合、そのアカウントが後で無効になる可能性があるためです。
ユーザーに環境を開く
実稼働環境と同様に、このオブジェクトのユーザーの構成がコピーされます。 コピーの完了後に不要なアクセスが発生しないように、運用環境にコピーする前にサンドボックス環境でユーザーを構成します。
コピーが完了したら、ユーザーのアクセス許可を更新する場合は、システム管理>ユーザー>ユーザー に移動し、本番環境へのアクセスを管理するユーザーを有効または無効にします。 多くのユーザーを有効/無効にする必要がある場合、Microsoft Excel アドイン を使用してこのタスクをすばやく完了できます。
コミュニティ ツール
開発者環境からバックアップ ファイルを準備するための他のツールをお探しですか。 他の情報源を次に示します。
- D365fo.Tools には、コミュニティが作成する貴重なツールが多数用意されています。
- GitHub でコミュニティによって提供されたオープン ソース プロジェクト。