Время ожидания возникает при импорте больших файлов настройки в Microsoft Dynamics CRM 2011 г.

В этой статье описывается решение проблемы, которая возникает при попытке импортировать большие файлы настроек в Microsoft Dynamics CRM 2011.

Важно!

В статье содержатся сведения об изменении реестра. Перед внесением любых изменений в реестр, создайте его резервную копию. и изучить процедуру его восстановления на случай возникновения проблемы. Дополнительные сведения о резервном копировании, восстановлении и изменении реестра см. в разделе Сведения о реестре Windows для опытных пользователей.

Область применения: Microsoft Dynamics CRM 2011 г.
Исходный номер базы знаний: 918609

Симптомы

При импорте больших файлов настройки в Microsoft Dynamics CRM 2011 г. возникает время ожидания. Кроме того, появляется одно из следующих сообщений об ошибке.

Сообщение об ошибке 1

Ошибка времени ожидания импорта.

Сообщение об ошибке 2

Превышена максимальная длина запроса.

Сообщение об ошибке 3

Не удалось отправить файл или не удалось выполнить импорт

Сообщение об ошибке 4

Это недопустимый файл настройки. Используйте файл .XML, созданный при экспорте настроек.

Если для параметра DevErrors задано значение Включено в файлеWeb.config , появляется следующее сообщение об ошибке:

Отчет об ошибке платформы Microsoft CRM:

Описание ошибки: истекло время ожидания

Сведения об ошибке. Сведения об этой ошибке не предоставлены платформой.

Номер ошибки: 0x80040E31

Кроме того, при обновлении большой базы данных Microsoft CRM до Microsoft Dynamics CRM 2011 может появиться следующее сообщение об ошибке:

09:54:25| Ошибка| Установка исключения. System.Exception: сбой действия Microsoft.Crm.Setup.Server.InstallDatabaseAction. --->
System.Data.SqlClient.SqlException: истекло время ожидания. Срок ожидания истек до завершения операции, или сервер не отвечает. в System.Data.SqlClient.SqlCommand.ExecuteNonQuery() в
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql(InstallDatabase database, String sql, Int32 timeout) в Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute()
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) at
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(IDictionary parameters) at
Microsoft.Crm.Setup.Common.Action.ExecuteAction(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)
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver)
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver)
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) at
Microsoft.Crm.Setup.Server.ServerSetup.Upgrade(IDictionary data) в Microsoft.Crm.Setup.Server.ServerSetup.Run()

Причина

Эта проблема возникает из-за того, что выполняется одно из следующих условий:

  • Время, используемое для импорта файлов настройки или обновления Microsoft Business Solutions — CRM, превышает значение по умолчанию OLEDBTimeout в Microsoft Dynamics CRM для компьютера под управлением Microsoft SQL Server.

  • Время, используемое для импорта файлов настройки или обновления Microsoft Dynamics CRM превышает ExtendedTimeout значение, используемое для длительных операций.

    Примечание.

    Для ExtendedTimeout записи реестра на сервере Microsoft Dynamics CRM не должно быть задано значение, превышающее 2 147 483 647. Это максимальное значение, которое ExtendedTimout может использовать запись реестра.
    Импорт файлов настройки может быть длительной операцией.

  • Размер файла Customization.xml превышает 7,5 мб.

    Примечание.

    • Файл Customization.xml создается при экспорте пользовательских сущностей.
    • По умолчанию Microsoft ASP.NET ограничивает размер HTTP-запроса 8 МБ.

Решение

Чтобы устранить эту проблему, используйте один или несколько из следующих методов.

Метод 1. Добавление подразделов реестра OLEDBTimeout и ExtendedTimeout для увеличения значений времени ожидания

Предупреждение

При неправильном изменении реестра с использованием редактора реестра или другого способа могут случиться серьезные проблемы. Из-за них может потребоваться переустановка операционной системы. Компания Microsoft не может гарантировать, что эти проблемы могут быть решены. Вносите изменения в реестр на ваш страх и риск.

  1. Нажмите кнопку Пуск, выберите пункт Выполнить, введите команду regedit и нажмите кнопку ОК.

  2. Найдите следующий подраздел реестра:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

  3. Щелкните правой кнопкой мыши MSCRM, наведите указатель мыши на пункт Создать, а затем выберите значение DWORD, чтобы создать новое значение DWORD.

  4. Переименуйте значение DWORD в значение OLEDBTimeout.

    Примечание.

    Это значение учитывает регистр.

  5. Щелкните правой кнопкой мыши значение DWORD и выберите команду Изменить.

  6. В диалоговом окне Изменение значения DWORD введите 86400 в поле Значение , выберите Десятичный в параметре Base и нажмите кнопку ОК.

    Примечание.

    В соответствии с требованиями компьютера под управлением SQL Server и количества файлов настройки значение может быть больше 86400. Значение 86400 эквивалентно 24 часам. Это необходимо сделать только временно или в качестве шага по устранению неполадок. Рекомендуемое значение — от 30 до 300. Если оставить этот параметр слишком высоким, это может привести к проблемам с производительностью.

  7. Щелкните правой кнопкой мыши MSCRM, наведите указатель мыши на пункт Создать, а затем выберите значение DWORD, чтобы создать новое значение DWORD.

  8. Переименуйте значение DWORD в ExtendedTimeout.

  9. Щелкните правой кнопкой мыши значение DWORD и выберите команду Изменить.

  10. В диалоговом окне Изменение значения DWORD введите 10000000 в поле Значение и нажмите кнопку ОК.

    Примечание.

    • В поле Данные значения можно ввести значение, превышающее 1 000 000. Однако не вводите значение, превышающее 2 147 483 647. Это шестнадцатеричное 0x7FFFFFFF.
    • ВАЖНО! Если этот ключ уже существует, обратите внимание на текущее значение. После завершения импорта или обновления для Microsoft Dynamics CRM задайте для этого ключа исходное значение или удалите ключ, если он ранее не существовал. Значение OLEDBTimeout по умолчанию — 30 секунд.

Метод 2. Изменение параметров в двух разных файлах Web.config

  1. Выберите Пуск, Все программы, Администрирование, а затем Диспетчер служб IIS.

  2. Разверните имя сервера, а затем разверните узел Веб-сайты.

  3. Щелкните правой кнопкой мыши веб-сайт Microsoft CRM и выберите Открыть.

  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 значения — секунды. По умолчанию значение равно 30 секундам OLEDBTimeout . Значение OLEDBTimeout управляет значением времени ожидания SQL, которое используется для одного SQL-запроса. Увеличенное OLEDBTimeout значение полезно при перегрузке сервера SQL Server. Кроме того, обработка запроса занимает больше времени.

Значение ExtendedTimeout

Единица значения — миллисекунда ExtendedTimeout . По умолчанию ExtendedTimeout значение равно 100 0000 миллисекундам. Значение ExtendedTimeout управляет значением времени ожидания ASP.NET, которое используется для запросов на импорт. Время ожидания должно быть больше времени завершения всего процесса импорта. Увеличенное ExtendedTimeout значение полезно, когда процесс импорта занимает много времени.

Примечание.

При низкой производительности SQL Server или при наличии большого количества файлов настройки для импорта процесс импорта занимает много времени.