次の方法で共有


標準ユーザー承認テスト (UAT) データベースのコピーのエクスポート

注記

コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。

データベース移動操作は、データ アプリケーション ライフサイクル管理 (DataALM) の一部として使用できるセルフサービス アクションのスイートです。 このチュートリアルでは、サンドボックス標準ユーザー受け入れテスト (UAT) からすべてのデータおよびトランザクションをエクスポートする方法を示します。

このチュートリアルでは、以下の内容を学習します。

  • UAT 環境を更新します。
  • Microsoft Dynamics Lifecycle Services の資産ライブラリへのエクスポートを実行します。
  • データベース バックアップをダウンロードします。
  • データベースをインポートし、開発環境で使用できるように準備します。

このシナリオの例として、既に稼働している顧客は、運用環境に運用トランザクションの最新のコピーを読み込みたいと考えています。 このアプローチを使用することで、顧客は、現実的なデータセットを使用して、特定のトランザクションをデバッグしたり、新機能やレポートを開発したりできます。

重要

ビルド環境へのデータベースコピーはサポートされていません。 詳細については、 ビルド環境を参照してください。

既知の制限

Microsoft Azure SQL Database プラットフォームによる最近の制限のため、Microsoft は 200 ギガバイト (GB) を超えるデータベースのエクスポートを推奨していません。 大規模なデータベースをエクスポートする必要がある場合は、SQL Database が大規模なエクスポートをサポートできるようになるまで 、従来のドキュメント を使用してください。 この推奨事項は、更新操作ではなくエクスポート操作に適用されることに注意してください。 更新操作は、サイズが最大 4 TB のデータベースをサポートできます。

必要条件

更新操作を実行するには、運用環境をデプロイする必要があります。または、少なくとも 2 つの標準 UAT 環境が必要です。 このチュートリアルを完了するには、開発環境をデプロイする必要があります。

UAT 環境を更新

この更新操作は、運用データベースの最新のコピーで UAT 環境を上書きします。 この手順を完了するには、トレーニング目的での更新の手順に従います。

資産ライブラリへのバックアップ

サンドボックス 環境詳細 ページで、 管理 メニューをクリックし、 データベースの移動を選択します。

データベース メニューを移動します。

エクスポート データベース アクションが使用できるページでスライダー ウィンドウが開きます。

データベース メニューをエクスポートします。

サンドボックスの更新やパッケージの展開などの他のサービス操作は、この間実行できません。 ソース環境は Dynamics ユーザーの観点から使用可能になります。

エクスポートが正常に完了した後に、環境の詳細ページのサービス操作からサインアウトします。 データベースのバックアップ セクションの 資産ライブラリ で資産を確認できます。

資産ライブラリのバックアップ ファイル。

.bacpac ファイルはここに格納され、インポート用 Tier 1 開発者環境に手動でダウンロードすることができます。 今後、Microsoft は、エクスポート アクションをトリガーし、資産ライブラリで使用可能なバックアップ ファイルを一覧表示するための API を提供します。 これには、バックアップ資産ファイルを自動でダウンロードするための、または Microsoft Azure Storage SDK を使用して、セキュリティで保護された BLOB ストレージに直接コピーするための、セキュリティで保護された URL が含まれます。

データベースのインポート

データベース バックアップ (.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 /TargetUser:"axdbadmin" /TargetPassword:"AOSWebSite@123" /TargetTrustServerCertificate:True

パラメータの説明を以下に示します。

  • tsn (ターゲット サーバー名) – インポートする Microsoft SQL Server インスタンスの名前。
  • tdn(ターゲット データベース名) – インポートするデータベースの名前。 データベースが既に存在していてはいけません
  • sf(ソース ファイル) – インポートするファイルのパスと名前。

重要

インポートされたデータがメタデータと互換性を確保するには、Visual Studio から完全なデータベース同期をトリガーする必要があります。

インポート中に、ユーザー名およびパスワードは必要ありません。 既定では、SQL Server は、現在サインインしているユーザーに対して Microsoft Windows 認証を使用します。

データベースの更新

インポートされたデータベースに対して、次の SQL スクリプトを実行します。 このスクリプトは、ソース データベースから削除したユーザーを追加し、この SQL Server インスタンスの SQL のログインに正しくリンクします。 スクリプトはまた、変更追跡を再度有効にします。 必ず、データベースの名前を使用できるように、最後の ALTER DATABASE ステートメントを編集してください。

CREATE USER axdeployuser FROM LOGIN axdeployuser
EXEC sp_addrolemember 'db_owner', 'axdeployuser'

CREATE USER axdbadmin FROM LOGIN axdbadmin
EXEC sp_addrolemember 'db_owner', 'axdbadmin'

CREATE USER axmrruntimeuser FROM LOGIN axmrruntimeuser
EXEC sp_addrolemember 'db_datareader', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datawriter', 'axmrruntimeuser'

CREATE USER axretaildatasyncuser FROM LOGIN axretaildatasyncuser

CREATE USER axretailruntimeuser FROM LOGIN axretailruntimeuser

CREATE USER axdeployextuser FROM LOGIN axdeployextuser

CREATE USER [NT AUTHORITY\NETWORK SERVICE] FROM LOGIN [NT AUTHORITY\NETWORK SERVICE]
EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'

UPDATE T1
SET T1.storageproviderid = 0
    , T1.accessinformation = ''
    , T1.modifiedby = 'Admin'
    , T1.modifieddatetime = getdate()
FROM docuvalue T1
WHERE T1.storageproviderid = 1 --Azure storage

DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking
DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking_V2
GO
-- Begin Refresh Retail FullText Catalogs
DECLARE @RFTXNAME NVARCHAR(MAX);
DECLARE @RFTXSQL NVARCHAR(MAX);
DECLARE retail_ftx CURSOR FOR
SELECT OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id) fullname FROM SYS.FULLTEXT_INDEXES
    WHERE FULLTEXT_CATALOG_ID = (SELECT TOP 1 FULLTEXT_CATALOG_ID FROM SYS.FULLTEXT_CATALOGS WHERE NAME = 'COMMERCEFULLTEXTCATALOG');
OPEN retail_ftx;
FETCH NEXT FROM retail_ftx INTO @RFTXNAME;

BEGIN TRY
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
        PRINT 'Refreshing Full Text Index ' + @RFTXNAME;
        EXEC SP_FULLTEXT_TABLE @RFTXNAME, 'activate';
        SET @RFTXSQL = 'ALTER FULLTEXT INDEX ON ' + @RFTXNAME + ' START FULL POPULATION';
        EXEC SP_EXECUTESQL @RFTXSQL;
        FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
    END
END TRY
BEGIN CATCH
    PRINT error_message()
END CATCH

CLOSE retail_ftx; 
DEALLOCATE retail_ftx; 
-- End Refresh Retail FullText Catalogs

--Begin create retail channel database record--
declare @ExpectedDatabaseName nvarchar(64) = 'Default';
declare @DefaultDataGroupRecId BIGINT;
declare @ExpectedDatabaseRecId BIGINT; 
IF NOT EXISTS (select 1 from RETAILCONNDATABASEPROFILE where NAME = @ExpectedDatabaseName)
BEGIN 
 select @DefaultDataGroupRecId = RECID from RETAILCDXDATAGROUP where NAME = 'Default'; 
 insert into RETAILCONNDATABASEPROFILE (DATAGROUP, NAME, CONNECTIONSTRING, DATASTORETYPE)
 values (@DefaultDataGroupRecId, @ExpectedDatabaseName, NULL, 0); 
 select @ExpectedDatabaseRecId = RECID from RETAILCONNDATABASEPROFILE where NAME = @ExpectedDatabaseName; 
 insert into RETAILCDXDATASTORECHANNEL (CHANNEL, DATABASEPROFILE)
 select RCT.RECID, @ExpectedDatabaseRecId from RETAILCHANNELTABLE RCT
 inner join RETAILCHANNELTABLEEXT RCTEX on RCTEX.CHANNEL = RCT.RECID
        update RETAILCHANNELTABLEEXT set LIVECHANNELDATABASE = @ExpectedDatabaseRecId where LIVECHANNELDATABASE = 0
END; 
--End create retail channel database record

変更追跡を有効にする

ソース データベースで変更追跡が有効になっている場合は、ターゲット環境の新たなプロビジョニング データベースで有効にしてください。 変更追跡を有効にするには、ALTER DATABASE コマンドを使用します。

ALTER DATABASE [your database name] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 6 DAYS, AUTO_CLEANUP = ON);

新しいデータベースで店舗の業務手順の現在のバージョン (変更追跡に関連する) が使用されていることを保証するには、データ管理のデータ エンティティの変更追跡をオンまたはオフにする必要があります。 任意のエンティティを選択します。 ストアド プロシージャの更新を起動するには、この手順が必要です。

新しいデータベースの使用を開始します。

環境を切り替えて新しいデータベースを使用するには、最初に次のサービスを停止します。

  • World Wide Web 発行サービス
  • Microsoft Dynamics 365 Unified Operations: バッチ管理サービス
  • Management Reporter 2012 処理サービス

これらのサービスが停止した後、AxDB データベースの名前を AxDB_orig に変更し、新しくインポートしたデータベースの名前を AxDB に変更して、3 つのサービスを再起動します。

元のデータベースに戻すには、このプロセスを逆にします。 つまり、サービスを停止し、データベースの名前を変更してから、サービスを再起動します。

Commerce 環境でその後に行う手順

コマース チャネルを使用している場合、セルフサービス サンドボックスから最初にエクスポートしたデータベースを開発環境にインポートするときは、移行先の開発環境で次の追加手順を実行する必要があります。 これらの手順を完了しないと、コマース チャンネルは機能しません。

  1. Commerce チャネル機能を復元するには、最新の Microsoft サービス更新または品質更新プログラムを適用します。これにより、チャネル データベースが作成されます。
  2. 以前に展開したチャネル データベース拡張機能を復元するには、対応する Retail セルフサービス配置可能パッケージを再度適用します。

注記

Commerce Version 10.0.38 から、部数化されたチャンネル データベースまたはレガシー チャンネル データベースは更新またはサポートされなくなりました。 コマース チャネル機能を復元するには、「 開発環境に Commerce Scale Unit をインストールする」の手順に従って、封印された CSU を設定する必要があります。

対象の環境を再プロビジョニングします。

重要

Commerce headquarters データベース (以前の AOS データベース) を移行する際、関連付けられている Commerce Scale Units (CSUs) は移動されません。 場合によっては、使用する機能に応じて、CSU の再配置が必要になる場合があります。 次に、データを CSU に完全に同期して、再配置を行う必要があります。 データの不一致が依然として存在する極端なシナリオでは、最終的な手段として CSU を削除し、新しい CSU を導入して置き換えた後、新しい CSU に対してデータの完全な同期を実行します。

環境固有のレコードの中には、自動的なデータベース移動操作に含められないものがあり、その手順を追加する必要があります。 次のような役割があります。

  • コマース セルフサービス インストーラー参照。
  • Commerce Scale Unit チャネル データベースの構成記録。

環境間でデータベースをコピーすると、次の追加の手順を実行しない限り、移行先環境の Commerce の機能は完全には機能しません。

Commerce Scale Units の初期化

データベースをサンドボックスのユーザー受け入れテスト (UAT) または運用環境に移動する場合は、データベースの移動操作が完了した後に、Commerce Scale Unit を初期化する必要があります。 ソース環境からの Commerce Scale Unit の関連付けは、移行先の環境にコピーされません。

Commerce のセルフサービス インストーラーの同期

本部内の Commerce セルフサービス インストーラーにアクセスできるようにするには、データベースの移動操作が完了した後にセルフサービス インストーラーを同期する必要があります。

重要

環境の再プロビジョニング手順は、データベース移動操作の一部として完全に自動化されており、これ以上手動で実行する必要はありません。 環境再ビジョニング ツールは引き続きアセット・ライブラリで利用可能ですが、Commerce バージョン 10.0.37 以前を実行している開発環境にデータベースを復元する場合にのみ必要です。 Commerce Version 10.0.38 以降を実行している開発環境では、シールされた CSU を使用する環境なので、環境の再プロビジョニング ツールは適用されません。

移行先の環境で環境の再プロビジョニング ツールを実行するには、次の手順を実行します。

  1. ソフトウェア配置可能パッケージ セクションにある自身のプロジェクトの アセット ライブラリ で、 インポートを選択します。
  2. 共用資産の一覧から、 環境再プロビジョニング ツールを選択します。
  3. 移行先環境の 環境の詳細 ページで、 管理>更新プログラムを適用を順に選択します。
  4. 先ほどアップロードした 環境再プロビジョニング ツールを選択し、 適用 を選択してパッケージを適用します。
  5. パッケージの配置の進捗を監視します。

配置可能なパッケージの適用方法についての詳細は、 配置可能なパッケージを作成するを参照してください。 配置可能パッケージを手動で適用する方法の詳細については、 配置可能 な パッケージ を コマンド ライン から インストール するを参照してください。

POS デバイスの再アクティブ化

販売時点管理 (POS) デバイスを使用する場合は、データベースをインポートした後、POS デバイスを再度アクティブ化する必要があります。 移行先環境で以前にアクティブ化されたデバイスは、機能しなくなります。 詳細については、販売時点管理 (POS) デバイスのライセンス認証 を参照してください。

財務報告データベースのリセット

財務報告を使用する場合は、財務報告データマートのリセットの手順に従って、財務報告データベースをリセットする必要があります。 (財務報告は以前は Management Reporter という名前でした)

ターゲット データベースの暗号化された環境固有のフィールドからデータを再入力

クライアントでは、暗号化された環境固有のフィールドに記録した値を入力します。 次のフィールドが影響されます。 フィールド名は Table.Field 形式で指定されます。

フィールド名 値を設定する場所
CreditCardAccountSetup.SecureMerchantProperties (クレジットカードアカウント設定.セキュアマーチャントプロパティ) 売掛金勘定>支払設定>支払サービスを選択します。
為替レート提供者設定詳細.値 総勘定元帳>通貨>為替レート プロバイダーを構成するを選択します。
FiscalEstablishment_BR.ConsumerEFDocCsc 組織管理>会計施設>会計施設の順に選択します。
FiscalEstablishmentStaging.CSC このフィールドは、データ インポート/エクスポート フレームワーク (DIXF) によって使用されます。
HcmPersonIdentificationNumber.PersonIdentificationNumber 人事管理>従業員>従業員を選択します。 ワーカータブの、個人情報グループで、ID 番号を選択します。
HcmWorkerActionHire.個人識別番号 このフィールドは、Microsoft Dynamics AX 7.0 以降 (2016 年 2 月) は廃止されました。 これは以前、すべての作業者アクション フォーム (人事管理>作業者>アクション>すべての作業者アクション) にありました。
SysEmailSMTPPassword.パスワード システム管理>電子メール>電子メール パラメーターの順に選択します。
SysOAuthUserTokens.EncryptedAccessToken (暗号化されたアクセストークン) このフィールドは、アプリケーション オブジェクト サーバー (AOS) により内部で使用されています。 これは無視できます。
SysOAuthUserTokens.EncryptedRefreshToken このフィールドは、AOS で内部的に使用されます。 これは無視できます。

コミュニティ ツール

開発者環境にバックアップ ファイルをインポートするための他のツールをお探しですか。 他の情報源を次に示します。

既知の問題

エクスポート データベースが「準備に失敗しました」状態

ライフサイクル サービスからの自動化がタイムアウトすると、エクスポート データベースの状態が準備失敗に変わります。 アセット ライブラリにエクスポートするエクスポート操作は、引き続き SQL データベースで実行されています。 この問題を解決するには、[ 再開 ] ボタンを使用して、プロセスを SQL Database に再接続します。 その後、プロセスが正常に完了します。

データベースのエクスポートに時間がかかる

Azure SQL チームは、Lifecycle Services が使用する Import/Export アプリケーション プログラミング インターフェイス (API) のサイズが 200 GB を超えるデータベースの実行時間が可変であると発表しました。 この問題が発生した場合、UAT データベースに直接 DevTest 環境を接続するか、レガシー ドキュメントに従うことができます。 ご利用の環境では、ポイントインタイム リストア機能が使用可能となっているため、マイクロソフトはバックアップ目的でのデータベースのエクスポートを推奨しません。

ライフサイクル サービス チームは、Azure SQL チームと直接連携して Import/Export API のパフォーマンスを向上させ、ライフサイクル サービスの今後のリリースで改善を行います。

Management Studio インストール ファイルをダウンロードできません

Microsoft SQL Server Management Studio インストーラーをダウンロードしようとすると、次のエラー メッセージが表示される場合があります。

現在のセキュリティ設定では、このファイルをダウンロードすることはできません。

この問題を回避するには、次の手順を実行してファイルのダウンロードを有効にします。

  1. Web ブラウザーでインターネット オプションを開きます。
  2. セキュリティタブで、インターネットゾーンを選択し、レベルのカスタマイズを選択します。
  3. ダウンロード までスクロールし、ファイルのダウンロード有効にする オプションを選択します。

データベース同期の失敗

Visual Studio から新しくインポートされたデータベースに対してデータベースを同期すると、同期が失敗する可能性があります。 次のエラー メッセージが表示される場合があります。

コード -1 でsyncengine.exeが終了したため、SQL接続のオープンに失敗しました。

この場合、次のメッセージも Windows アプリケーション ログのイベント ID 140 で記録されます。

オブジェクト サーバー データベース シンクロナイザー: データベースに格納されている内部システム テーブル バージョン番号が、カーネル (141/138) でサポートされているバージョンよりも大きくなっています。 新しい Microsoft Dynamics カーネルを使用するか、-REPAIR コマンドライン パラメーターを使用して Microsoft Dynamics を起動し、同期を強制します。

この問題は、現在の環境のプラットフォーム ビルド番号がソース環境のプラットフォーム ビルド番号より小さい場合に発生します。 問題を解決するには、状況に応じて、次のいずれかの手順に従います。

  • ライフサイクル サービスの [環境] ページの [更新] タイルを使用して、ソース環境のプラットフォームと一致するように、現在の環境のプラットフォームをアップグレードします。

  • データベースで必要なバージョンを調整する次のクエリを実行します。

    UPDATE SQLSYSTEMVARIABLES
    
    SET VALUE = 138
    
    WHERE PARM = 'SYSTABVERSION'
    

    注記

    このクエリの値 138 は、この特定の環境でバージョン 138 が想定されていたイベント ログ メッセージから取得されます。

パフォーマンス

次のガイドラインは、最適なパフォーマンスを達成するのに役立ちます。

  • .bacpac ファイルは、SQL Server インスタンスを実行するコンピューターに常にローカルにインポートします。 Management Studio からリモート マシンにインポートしないでください。
  • Azure でホストされているワンボックス環境にインポートする場合は、.bacpac ファイルを D ドライブに置きます。 (ワンボックス環境はレベル 1 環境とも呼ばれます。) Azure 仮想マシン (VM) 上でのテンポラリー ドライブに関する詳細については、Windows Azure 仮想マシンのテンポラリー ドライブを理解する を参照してください。
  • SQL Server Windows サービス インスタンス ファイルの初期化 を実行するアカウントに権限を付与します。 この操作により、*.bak ファイルからのインポート プロセスの速度と復元速度が向上します。 開発者環境では、axlocaladmin アカウントとして実行する SQL Server を設定することにより、SQL Server サービスを実行するアカウントがこれらの権限を持っていることを簡単に確認することができます。