Se produce un tiempo de espera al importar archivos de personalización de gran tamaño en Microsoft Dynamics CRM 2011

En este artículo se proporciona una solución para el problema por el que se produce un tiempo de espera al intentar importar archivos de personalización de gran tamaño en Microsoft Dynamics CRM 2011.

Importante

Este artículo contiene información sobre cómo modificar el Registro. Antes de modificar el Registro, asegúrese de hacer una copia de seguridad del mismo y Asegúrese de saber cómo recuperar el registro en caso de producirse algún problema. Para obtener más información sobre cómo realizar copias de seguridad, restaurar y modificar el Registro, vea Información del Registro de Windows para usuarios avanzados.

Se aplica a: Microsoft Dynamics CRM 2011
Número de KB original: 918609

Síntomas

Al importar archivos de personalización de gran tamaño en Microsoft Dynamics CRM 2011, se produce un tiempo de espera. Además, recibirá uno de los siguientes mensajes de error.

Mensaje de error 1

Error de tiempo de espera de importación.

Mensaje de error 2

Se superó la longitud máxima de la solicitud.

Mensaje de error 3

No se pudo cargar el archivo o se produjo un error en la importación

Mensaje de error 4

No es un archivo de personalización válido. Use un archivo .XML generado mediante la exportación de personalizaciones.

Si el valor de DevErrors se establece en Activado en el archivo Web.config , recibirá el siguiente mensaje de error:

Informe de errores de la plataforma Microsoft CRM:

Descripción del error: tiempo de espera expirado

Detalles del error: la plataforma no ha proporcionado detalles sobre este error.

Número de error: 0x80040E31

Además, al actualizar una base de datos de Microsoft CRM grande a Microsoft Dynamics CRM 2011, puede recibir el siguiente mensaje de error:

09:54:25| Error| Excepción de instalación. System.Exception: error de acción Microsoft.Crm.Setup.Server.InstallDatabaseAction. --->
System.Data.SqlClient.SqlException: tiempo de espera expirado. El período de tiempo de espera se agotó antes de la finalización de la operación o el servidor no responde. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() en
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql(InstallDatabase database, String sql, Int32 timeout) en Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute() en
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) en
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(parámetros de IDictionary) en
Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action, IDictionary parameters, Boolean undo) --- End of inner exception stack trace --- at Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action, IDictionary parameters, Boolean undo) at
Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver) en
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver) en
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver) en
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) en
Microsoft.Crm.Setup.Server.ServerSetup.Upgrade(datos de IDictionary) en Microsoft.Crm.Setup.Server.ServerSetup.Run()

Causa

Este problema se produce porque se cumple una de las condiciones siguientes:

  • El tiempo que se usa para importar los archivos de personalización o para actualizar Microsoft Business Solutions - CRM supera el valor predeterminado OLEDBTimeout en Microsoft Dynamics CRM para el equipo que ejecuta Microsoft SQL Server.

  • El tiempo que se usa para importar los archivos de personalización o para actualizar Microsoft Dynamics CRM supera el ExtendedTimeout valor que se usa para las operaciones de larga duración.

    Nota:

    La ExtendedTimeout entrada del Registro en el servidor de Microsoft Dynamics CRM no debe establecerse en un valor mayor que 2 147 483 647. Ese es el valor máximo que puede usar la entrada del ExtendedTimout Registro.
    La importación de archivos de personalización puede ser una operación de larga duración.

  • El tamaño del archivo Customization.xml es superior a 7,5 megabytes (MB).

    Nota:

    • El archivo Customization.xml se crea al exportar entidades personalizadas.
    • De forma predeterminada, Microsoft ASP.NET limita el tamaño de la solicitud HTTP a 8 MB.

Resolución

Para resolver este problema, use uno o varios de los métodos siguientes.

Método 1: agregue las subclaves del Registro OLEDBTimeout y ExtendedTimeout para aumentar los valores de tiempo de espera.

Advertencia

Es posible que se produzcan problemas graves si modifica el Registro de forma incorrecta mediante el Editor del Registro u otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar la solución de estos problemas. Modifique el Registro bajo su propia responsabilidad.

  1. Seleccione Inicio, haga clic en Ejecutar, escriba regedit, y luego seleccione Aceptar.

  2. Busque la siguiente subclave del Registro:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

  3. Haga clic con el botón derecho en MSCRM, seleccione Nuevo y, a continuación, seleccione Valor DWORD para crear un nuevo valor DWORD.

  4. Cambie el nombre del valor DWORD al valor OLEDBTimeout.

    Nota:

    Este valor distingue mayúsculas de minúsculas.

  5. Haga clic con el botón derecho en el valor DWORD y, a continuación, seleccione Modificar.

  6. En el cuadro de diálogo Editar valor DWORD , escriba 86400 en el cuadro Datos de valor , seleccione Decimal en la opción Base y, a continuación, seleccione Aceptar.

    Nota:

    Según el requisito del equipo que ejecuta SQL Server y el número de archivos de personalización, el valor puede ser mayor que 86400. El valor de 86400 es equivalente a 24 horas. Esto solo debe realizarse temporalmente o como un paso de solución de problemas. El valor recomendado de esto es entre 30 y 300. Dejar esta configuración demasiado alta puede dar lugar a problemas de rendimiento.

  7. Haga clic con el botón derecho en MSCRM, seleccione Nuevo y, a continuación, seleccione Valor DWORD para crear un nuevo valor DWORD.

  8. Cambie el nombre del valor DWORD al valor ExtendedTimeout.

  9. Haga clic con el botón derecho en el valor DWORD y, a continuación, seleccione Modificar.

  10. En el cuadro de diálogo Editar valor DWORD , escriba 1000000 en el cuadro Datos de valor y, a continuación, seleccione Aceptar.

    Nota:

    • En el cuadro Datos de valor , puede escribir un valor mayor que 1000 000. Sin embargo, no escriba un valor que sea mayor que 2.147.483.647. Se trata de 0x7FFFFFFF hexadecimal.
    • IMPORTANTE: Si esta clave ya existe, observe el valor actual. Después de completar la importación o la actualización de Microsoft Dynamics CRM, vuelva a establecer el valor de esta clave en el valor original o elimine la clave si no existía anteriormente. El valor oledbtimeout predeterminado es de 30 segundos.

Método 2: modificar los parámetros en dos archivos de Web.config diferentes

  1. Seleccione Inicio, Todos los programas, Herramientas administrativas y Administrador de Internet Information Services (IIS).

  2. Expanda el nombre del servidor y, a continuación, expanda Sitios web.

  3. Haga clic con el botón derecho en el sitio web Microsoft CRM y, a continuación, seleccione Abrir.

  4. Haga clic con el botón derecho en el archivo Web.config , seleccione Abrir con y, a continuación, seleccione Bloc de notas.

  5. En el Bloc de notas, busque la línea siguiente.

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

  6. Cambiar executionTimeout="3600" y change maxRequestLength="20000".

  7. Guarde y cierre el archivo Web.config .

  8. En el directorio en el que abrió el archivo Web.config , abra la carpeta MSCRMServices.

  9. Haga clic con el botón derecho en el archivo Web.config , seleccione Abrir con y, a continuación, seleccione Bloc de notas.

  10. En el Bloc de notas, busque la línea siguiente.

    <httpRuntime maxRequestLength="8192"/>

  11. Cambie maxRequestLength="20000".

  12. Guarde y cierre el archivo Web.config .

    Importante

    Después de completar la acción que requiere los cambios anteriores en el archivo web.config , estos parámetros deben restablecerse a sus valores predeterminados.

Más información

Valor OLEDBTimeout

La unidad del OLEDBTimeout valor es segundos. De forma predeterminada, el OLEDBTimeout valor es de 30 segundos. El OLEDBTimeout valor controla el valor de tiempo de espera de SQL que se usa para una sola consulta SQL. El valor aumentado OLEDBTimeout es útil cuando el servidor SQL Server está sobrecargado. Además, la consulta tarda más tiempo en procesarse.

Valor de ExtendedTimeout

La unidad del ExtendedTimeout valor es milisegundos. De forma predeterminada, el ExtendedTimeout valor es 1000000 milisegundos. El ExtendedTimeout valor controla el ASP.NET valor de tiempo de espera que se usa para las solicitudes de importación. El valor de tiempo de espera debe ser mayor que el tiempo de finalización de todo el proceso de importación. El valor aumentado ExtendedTimeout es útil cuando el proceso de importación tarda mucho tiempo.

Nota:

Cuando el rendimiento de SQL Server es lento o cuando hay muchos archivos de personalización que importar, el proceso de importación tarda mucho tiempo.