Tiempo de espera agotado al importar grandes archivos de personalización en Microsoft Dynamics CRM

Se aplica a: Microsoft Dynamics CRM 2011Dynamics CRM 4.0

Importante: Este artículo contiene información acerca de cómo modificar el registro. Asegúrese de hacer copia de seguridad del registro antes de modificarlo. Asegúrese de que sabe cómo restaurarlo si ocurre algún problema. Para obtener más información acerca de cómo hacer copia de seguridad, restaurar y modificar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

Síntomas


Al importar grandes archivos de personalización en Microsoft Dynamics CRM 3.0 o en Microsoft Dynamics CRM 4.0, 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
Ha excedido la longitud máxima de solicitud.
Mensaje de error 3
No se pudo cargar el archivo o error al importar
Mensaje de error 4
No es un archivo de personalización válido. Utilice una. Archivo XML que se ha generado mediante la exportación de personalizaciones.
Si el valor DevErrors está establecido en "On" en el archivo Web.config, recibirá el siguiente mensaje de error:
Informe de errores de la plataforma de Microsoft CRM:


Descripción del error: Tiempo de espera caducado


Detalles del error: No se han proporcionado detalles sobre este error por la plataforma.


Número de error: 0x80040E31
Además, cuando se actualiza una gran base de datos de Microsoft CRM desde Microsoft Business Solutions - CRM 1.2 a Microsoft Dynamics 3.0 o de Microsoft Dynamics CRM 3.0 a Microsoft Dynamics CRM 4.0, puede recibir el siguiente mensaje de error:
09:54:25 | Error | Instale la excepción. System.Exception: Acción Microsoft.CRM.Setup.Server.InstallDatabaseAction. ---> System.Data.SqlClient.SqlException: tiempo de espera caducado. El tiempo de espera caducó antes de completar la operación o el servidor no responde. en System.Data.SqlClient.SqlCommand.ExecuteNonQuery() en Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql (base de datos de valor de InstallDatabase, cadena sql, el tiempo de espera de Int32) en Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute() en Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install (Int32 códigoIdioma, archivo de cadena, booleano actualización) en Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do (parámetros IDictionary) en Microsoft.Crm.Setup.Common.Action.ExecuteAction (acción de la acción, parámetros IDictionary, deshacer booleano)---fin del seguimiento de pila de excepción interna---en Microsoft.Crm.Setup.Common.Action.ExecuteAction (acción de la acción, parámetros IDictionary, deshacer booleano) en 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 (IDictionary datos) en Microsoft.Crm.Setup.Server.ServerSetup.Run()

Causa


Este problema se produce porque una de las siguientes condiciones es verdadera:
  • El tiempo que se utiliza para importar los archivos de personalización o para actualizar Microsoft Business Solutions - CRM supera el valor de OLEDBTimeout predeterminado en Microsoft Dynamics CRM para el equipo que está ejecutando Microsoft SQL Server.
  • El tiempo que se utiliza para importar los archivos de personalización o para actualizar Microsoft CRM supera el valor de ExtendedTimeout que se utiliza para operaciones de larga duración.

    Nota: La entrada del registro ExtendedTimeout en el servidor de Microsoft Dynamics CRM no debe establecerse en un valor mayor que 2.147.483.647. Que es el valor máximo que se puede utilizar la entrada del registro ExtendedTimout.

    Nota: Importar 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).

    Notas:
    • 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.

Solución


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

Método 1: Agregar el OLEDBTimeout y las subclaves del registro ExtendedTimeout para aumentar los valores de tiempo de espera

Advertencia: pueden producirse problemas graves si modifica incorrectamente el registro mediante el Editor del registro o mediante cualquier otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar que estos problemas puedan resolverse. Modifique el registro bajo su propio riesgo.
  1. Haga clic en Inicio, haga clic en Ejecutar, escriba regedit y, a continuación, haga clic en Aceptar.
  2. Busque la siguiente subclave del registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM
  3. Haga clic en MSCRM, seleccione nuevoy, a continuación, haga clic en Valor DWORD para crear un nuevo valor DWORD.
  4. Cambie el valor DWORD en el valor siguiente:
    OLEDBTimeout

    Nota: Este valor distingue mayúsculas de minúsculas
  5. Haga clic en el valor DWORD y, a continuación, haga clic en Modificar.
  6. En el cuadro de diálogo Editar valor DWORD , escriba 86400 en el cuadro información del valor , haga clic en Decimal en la opción de Base y, a continuación, haga clic en Aceptar.


    Nota: Según el requisito del equipo que está ejecutando el servidor SQL y el número de archivos de personalización, el valor puede ser mayor que 86400. El valor de 86400 equivale a 24 horas. Esto debería sólo hacerse temporalmente o como un paso de solución de problemas. El valor recomendado de esto es entre 30 y 300. Dejar este valor demasiado alto puede producir problemas de rendimiento.
  7. Haga clic en MSCRM, seleccione nuevoy, a continuación, haga clic en Valor DWORD para crear un nuevo valor DWORD.
  8. Cambie el valor DWORD en el valor siguiente:
    ExtendedTimeout
  9. Haga clic en el valor DWORD y, a continuación, haga clic en Modificar.
  10. En el cuadro de diálogo Editar valor DWORD , escriba 1000000 en el cuadro información del valor y, a continuación, haga clic en Aceptar.

    Notas:
    • En el cuadro información del valor , puede escribir un valor que es mayor que 1.000.000. Sin embargo, no escriba un valor mayor que 2.147.483.647. Esto es el hexadecimal 0x7FFFFFFF.
    • Importante: si ya existe esta clave, observe el valor actual. Cuando haya completado la importación o la actualización de Microsoft Dynamics CRM, establezca el valor de esta clave al valor original o eliminar la clave si no existía anteriormente. El valor de OLEDBTimeout predeterminado es 30 segundos.

Método 2: Modificar los parámetros en dos archivos Web.config

  1. Haga clic en Inicio, seleccione Todos los programas, haga clic en Herramientas administrativasy, a continuación, haga clic en Administrador de servicios de Internet Information Server (IIS).
  2. Expanda el nombre del servidor y, a continuación, expanda sitios Web.
  3. Haga clic en el sitio Web de Microsoft CRM v3.0 o el sitio Web de Microsoft CRM v4.0 y, a continuación, haga clic en Abrir.
  4. Haga clic en el archivo Web.config, haga clic en Abrir cony, a continuación, haga clic en Bloc de notas.
  5. En el Bloc de notas, busque la línea siguiente.
    <httpRuntime executionTimeout="300" maxRequestLength="8192"/>
  6. Cambiar executionTimeout = "3600" y cambiar maxRequestLength = "20000".
  7. Guarde y cierre el archivo Web.config.
  8. En el directorio en el que al abrir el archivo Web.config, abra la carpeta MSCRMServices.
  9. Haga clic en el archivo Web.config, haga clic en Abrir cony, a continuación, haga clic en Bloc de notas.
  10. En el Bloc de notas, busque la línea siguiente.
    <httpRuntime maxRequestLength="8192"/>
  11. Cambiar maxRequestLength = "20000".
  12. Guarde y cierre el archivo Web.config.
    • Importante: después de completar la acción que deberá realizar los cambios anteriores en el archivo web.config, estos parámetros deben restablecerse a sus valores predeterminados.

Más información


El valor de OLEDBTimeout

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

El valor de ExtendedTimeout

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

Nota: Cuando el rendimiento del servidor SQL es lento o cuando hay muchos archivos de personalización para importar, el proceso de importación tarda mucho tiempo.