大きなカスタマイズ ファイルを Microsoft Dynamics CRM 2011 にインポートするとタイムアウトが発生する

この記事では、大規模なカスタマイズ ファイルを Microsoft Dynamics CRM 2011 にインポートしようとしたときにタイムアウトが発生する問題の解決策について説明します。

重要

この資料には、レジストリの編集方法が記載されています。 レジストリを変更する前にレジストリのバックアップを必ず作成してください。 また、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。 レジストリをバックアップ、復元、変更する方法の詳細については、「 高度なユーザー向けの Windows レジストリ情報」を参照してください。

適用対象: Microsoft Dynamics CRM 2011
元の KB 番号: 918609

現象

2011 Microsoft Dynamics CRMに大きなカスタマイズ ファイルをインポートすると、タイムアウトが発生します。 さらに、次のいずれかのエラー メッセージが表示されます。

エラー メッセージ 1

インポート タイムアウト エラー。

エラー メッセージ 2

要求の最大長を超えました。

エラー メッセージ 3

ファイルをアップロードできませんでしたか、インポートに失敗しました

エラー メッセージ 4

これは有効なカスタマイズ ファイルではありません。 カスタマイズをエクスポートして生成された .XML ファイルを使用してください。

Web.config ファイルで DevErrors の値が [オン] に設定されている場合は、次のエラー メッセージが表示されます。

Microsoft CRM プラットフォーム エラー レポート:

エラーの説明: タイムアウトの有効期限が切れています

エラーの詳細: このエラーの詳細は、プラットフォームによって提供されていません。

エラー番号: 0x80040E31

さらに、大規模なMicrosoft CRM データベースを Microsoft Dynamics CRM 2011 にアップグレードすると、次のエラー メッセージが表示される場合があります。

09:54:25|エラー|インストール例外。System.Exception: アクション Microsoft.Crm.Setup.Server.InstallDatabaseAction が失敗しました。 --->
System.Data.SqlClient.SqlException: タイムアウトの有効期限が切れました。 The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at
Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute() の Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.SqlScriptAction.Execute() の Microsoft.Crm.Setup.DatabaseUtility.ExecuteSql(InstallDatabase database, String sql, Int32 timeout)
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) at
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(IDictionary パラメーター)
Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, IDictionary parameters, Boolean undo) --- Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, IDictionary parameters, Boolean undo) の内部例外スタック トレース ---の終了
Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver) at
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.ServerSetup.Run() の Microsoft.Crm.Setup.ServerSetup.Upgrade(IDictionary data)

原因

この問題は、次のいずれかの条件が満たされているために発生します。

  • カスタマイズ ファイルのインポートまたは Microsoft Business Solutions - CRM のアップグレードに使用される時間が、Microsoft SQL Serverを実行しているコンピューターのMicrosoft Dynamics CRMの既定値OLEDBTimeoutを超えています。

  • カスタマイズ ファイルのインポートまたはMicrosoft Dynamics CRMのアップグレードに使用される時間が、実行時間のExtendedTimeout長い操作に使用される値を超えています。

    注:

    ExtendedTimeout Microsoft Dynamics CRM サーバーのレジストリ エントリは、2,147,483,647 を超える値に設定しないでください。 これは、レジストリ エントリで ExtendedTimout 使用できる最大値です。
    カスタマイズ ファイルのインポートは、実行時間の長い操作になる可能性があります。

  • Customization.xml ファイルのサイズが 7.5 メガバイト (MB) を超えています。

    注:

    • Customization.xml ファイルは、カスタム エンティティをエクスポートするときに作成されます。
    • 既定では、Microsoft ASP.NET は HTTP 要求サイズを 8 MB に制限します。

解決方法

この問題を解決するには、次の 1 つ以上の方法を使用します。

方法 1 - OLEDBTimeout と ExtendedTimeout レジストリ サブキーを追加してタイムアウト値を増やす

警告

レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 このような問題が発生した場合は、オペレーティング システムの再インストールが必要になることがあります。 こうした問題の修復について、マイクロソフトはいかなる保証もいたしません。 レジストリの変更はユーザー自身の責任において行ってください。

  1. [スタート] ボタンを選択し、[ファイル名を指定して実行] を選択します。次に、「regedit」と入力し、[OK] を選択します。

  2. 次のレジストリ サブキーを見つけます。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

  3. MSCRM を右クリックし、[新規] をポイントし、[DWORD 値] を選択して新しい DWORD 値を作成します。

  4. DWORD 値の名前を OLEDBTimeout の値に変更します。

    注:

    この値では大文字と小文字が区別されます。

  5. DWORD 値を右クリックし、[ 変更] を選択します。

  6. [DWORD 値の編集] ダイアログ ボックスの [値データ] ボックスに「86400」と入力し、[基本] オプションで [10 進数] を選択し、[OK] を選択します

    注:

    SQL Server を実行しているコンピューターの要件とカスタマイズ ファイルの数に応じて、値は 86400 を超えることができます。 値 86400 は 24 時間に相当します。 これは、一時的またはトラブルシューティングの手順としてのみ実行する必要があります。 この推奨値は 30 から 300 の間です。 この設定を大きすぎると、パフォーマンスの問題が発生する可能性があります。

  7. MSCRM を右クリックし、[新規] をポイントし、[DWORD 値] を選択して新しい DWORD 値を作成します。

  8. DWORD 値の名前を ExtendedTimeout の値に変更します。

  9. DWORD 値を右クリックし、[ 変更] を選択します。

  10. [DWORD 値の編集] ダイアログ ボックスの [値データ] ボックスに「1000000」と入力し、[OK] を選択します

    注:

    • [ 値データ ] ボックスに、1,000,000 を超える値を入力できます。 ただし、2,147,483,647 を超える値は入力しないでください。 これは 16 進数の0x7FFFFFFFです。
    • 重要: このキーが既に存在する場合は、現在の値に注意してください。 Microsoft Dynamics CRMのインポートまたはアップグレードを完了したら、このキーの値を元の値に戻すか、以前に存在しなかった場合はキーを削除します。 既定の OLEDBTimeout 値は 30 秒です。

方法 2 - 2 つの異なる Web.config ファイルのパラメーターを変更する

  1. [ スタート] を選択し、[ すべてのプログラム] を選択し、[ 管理ツール] を選択し、[ インターネット インフォメーション サービス (IIS) マネージャー] を選択します。

  2. サーバー名を展開し、[ Web サイト] を展開します。

  3. Microsoft CRM Web サイトを右クリックし、[開く] を選択します。

  4. Web.config ファイルを右クリックし、[開く] を選択し、[メモ帳] を選択します。

  5. メモ帳で、次の行を見つけます。

    <httpRuntime executionTimeout="300" maxRequestLength="8192"/>

  6. と を変更 executionTimeout="3600" します change maxRequestLength="20000"

  7. Web.config ファイルを 保存して閉じます。

  8. Web.config ファイルを開いたディレクトリで、MSCRMServices フォルダーを開きます。

  9. Web.config ファイルを右クリックし、[開く] を選択し、[メモ帳] を選択します。

  10. メモ帳で、次の行を見つけます。

    <httpRuntime maxRequestLength="8192"/>

  11. を変更 maxRequestLength="20000"します。

  12. Web.config ファイルを 保存して閉じます。

    重要

    上記の web.configファイルの 変更を必要とするアクションを完了したら、これらのパラメーターを既定値にリセットする必要があります。

詳細

OLEDBTimeout 値

値の OLEDBTimeout 単位は秒です。 既定では、 OLEDBTimeout 値は 30 秒です。 値は OLEDBTimeout 、1 つの SQL クエリに使用される SQL タイムアウト値を制御します。 値の増加 OLEDBTimeout は、SQL サーバーがオーバーロードされている場合に役立ちます。 さらに、クエリの処理に時間がかかります。

ExtendedTimeout 値

値の ExtendedTimeout 単位はミリ秒です。 既定では、 ExtendedTimeout 値は 10000000 ミリ秒です。 値は ExtendedTimeout 、インポート要求に使用される ASP.NET タイムアウト値を制御します。 タイムアウト値は、インポート プロセス全体を完了するための時間よりも大きくする必要があります。 値の増加 ExtendedTimeout は、インポート プロセスに時間がかかる場合に便利です。

注:

SQL サーバーのパフォーマンスが遅い場合、またはインポートするカスタマイズ ファイルが多数ある場合、インポート プロセスには長い時間がかかります。