Data Migration Assistant の設定を構成する

dma.exe.config ファイルで構成値を設定することで、Data Migration Assistant の特定の動作を微調整できます。 この記事では、主要な構成値について説明します。

Data Migration Assistant デスクトップ アプリケーションの dma.exe.config ファイルとコマンド ライン ユーティリティは、コンピューター上の次のフォルダーにあります。

  • デスクトップ アプリケーション

    %ProgramFiles%\Microsoft Data Migration Assistant\dma.exe.config

  • コマンド ライン ユーティリティ

    %ProgramFiles%\Microsoft Data Migration Assistant\dmacmd.exe.config

変更する前に、必ず元の構成ファイルのコピーを保存してください。 変更を行った後、新しい構成値を有効にするには Data Migration Assistant を再起動します。

並列に評価するデータベースの数

Data Migration Assistant は複数のデータベースを並列に評価します。 評価の間に、Data Migration Assistant はデータベース スキーマを認識するためにデータ層アプリケーション (dacpac) を抽出します。 同じサーバー上の複数のデータベースが並列で評価された場合、この操作はタイムアウトすることがあります。

Data Migration Assistant v2.0 以降では、parallelDatabases 構成値を設定することでこれを制御できます。 既定値は 8 です。

<advisorGroup>
<workflowSettings>
<assessment parallelDatabases="8" />
</workflowSettings>
</advisorGroup>

並列に移行するデータベースの数

Data Migration Assistant は、ログインを移行する前に、複数のデータベースを並列に移行します。 移行の間に、Data Migration Assistant はソース データベースのバックアップを取得し、必要に応じてバックアップをコピーしてから、ターゲット サーバーにそれを復元します。 移行対象として複数のデータベースが選ばれている場合、タイムアウト エラーが発生する可能性があります。

Data Migration Assistant v2.0 以降では、この問題が発生する場合、parallelDatabases 構成値を減らすことができます。 この値を大きくすると、全体的な移行時間を短縮できます。

<advisorGroup>
<workflowSettings>
<migration parallelDatabases="8″ />
</workflowSettings>
</advisorGroup>

DacFX の設定

評価の間に、Data Migration Assistant はデータベース スキーマを認識するためにデータ層アプリケーション (dacpac) を抽出します。 データベースが大きい場合、またはサーバーに負荷がかかっている場合、この操作がタイムアウトで失敗する可能性があります。 Data Migration v1.0 以降では、次の構成値を変更してエラーを回避できます。

Note

既定では、<dacfx> エントリ全体がコメントになっています。 コメントを解除してから、必要に応じて値を変更してください。

  • commandTimeout

    このパラメーターは、IDbCommand.CommandTimeout プロパティを "秒単位" で設定します。 (既定値 = 60)

  • databaseLockTimeout

    このパラメーターは、SET LOCK_TIMEOUT timeout_period ("ミリ秒単位") と同じです。 (既定値 = 5000)

  • maxDataReaderDegreeOfParallelism

    このパラメーターは、使用する SQL 接続プール接続の数を設定します。 (既定値 = 8)

<advisorGroup>
<advisorSettings>
<dacFx commandTimeout="60" databaseLockTimeout="5000" maxDataReaderDegreeOfParallelism="8"/>
</advisorSettings>
</advisorGroup>

Stretch Database: 推奨のしきい値

重要

Stretch Database は、SQL Server 2022 (16.x) および Azure SQL Database で非推奨になります。 この機能は、データベース エンジンの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。

SQL Server Stretch Database を使うと、Microsoft SQL Server 2016 から Azure にウォームとコールドのトランザクション データを動的に拡張できます。 Stretch Database の推奨は、アドバイザー オプションとして使用できなくなりました。

SQL 接続のタイムアウト

接続タイムアウト値を特定の秒数に設定することで、評価または移行の実行中にソースとターゲットのインスタンスの SQL 接続タイムアウトを制御できます。 既定値は 15 秒です。

<appSettings>
<add key="ConnectionTimeout" value="15" />
</appSettings>

エラー コードを無視する

各ルールのタイトルにはエラー コードが含まれます。 ルールが不要で無視したい場合は、ignoreErrorCodes プロパティを使います。 1 つのエラーまたは複数のエラーを無視するように指定できます。 複数のエラーを無視するには、セミコロンを使います (例: ignoreErrorCodes="46010;71501")。 既定値は 71501 です。これは、オブジェクトがプロシージャやビューなどのシステム オブジェクトを参照するときに識別される未解決の参照に関連付けられています。

<workflowSettings>
<assessment parallelDatabases="8" ignoreErrorCodes="71501" />
</workflowSettings>

関連項目