Un délai d’attente se produit lorsque vous importez des fichiers de personnalisation volumineux dans Microsoft Dynamics CRM 2011

Cet article fournit une résolution du problème lié au délai d’attente lorsque vous essayez d’importer des fichiers de personnalisation volumineux dans Microsoft Dynamics CRM 2011.

Importante

Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d’informations sur la sauvegarde, la restauration et la modification du Registre, consultez Informations du Registre Windows pour les utilisateurs avancés.

S’applique à : Microsoft Dynamics CRM 2011
Numéro de la base de connaissances d’origine : 918609

Symptômes

Lorsque vous importez des fichiers de personnalisation volumineux dans Microsoft Dynamics CRM 2011, un délai d’attente se produit. En outre, vous recevez l’un des messages d’erreur suivants.

Message d’erreur 1

Erreur de délai d’expiration de l’importation.

Message d’erreur 2

Longueur maximale de la demande dépassée.

Message d’erreur 3

Impossible de charger le fichier ou l’importation a échoué

Message d’erreur 4

Il ne s’agit pas d’un fichier de personnalisation valide. Utilisez un fichier .XML généré par l’exportation des personnalisations.

Si la valeur DevErrors est définie sur Activé dans le fichier Web.config , le message d’erreur suivant s’affiche :

Rapport d’erreurs de plateforme Microsoft CRM :

Description de l’erreur : Expiration du délai d’expiration

Détails de l’erreur : les détails de cette erreur n’ont pas été fournis par la plateforme.

Numéro d’erreur : 0x80040E31

En outre, lorsque vous mettez à niveau une base de données Microsoft CRM volumineuse vers Microsoft Dynamics CRM 2011, vous pouvez recevoir le message d’erreur suivant :

09 :54 :25| Erreur | Installez l’exception. System.Exception : l’action Microsoft.Crm.Setup.Server.InstallDatabaseAction a échoué. --->
System.Data.SqlClient.SqlException : délai d’attente expiré. Le délai d’expiration s’est produit avant la fin de l’opération ou le serveur ne répond pas. sur System.Data.SqlClient.SqlCommand.ExecuteNonQuery() à l’adresse
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseUtility.ExecuteSql(InstallDatabase database, String sql, Int32 timeout) à l’adresse Microsoft.Crm.Setup.DatabaseInstaller.SqlScriptAction.Execute() à l’adresse
Microsoft.Crm.Setup.DatabaseInstaller.DatabaseInstaller.Install(Int32 languageCode, String file, Boolean upgrade) à l’adresse
Microsoft.Crm.Setup.Server.InstallDatabaseAction.Do(paramètres IDictionary) à
Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, Paramètres IDictionary, Annulation booléenne) --- Fin de la trace de pile d’exceptions interne --- sur Microsoft.Crm.Setup.Common.Action.ExecuteAction(Action action, Paramètres IDictionary, Annulation booléenne) à l’adresse
Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver) à l’adresse
Microsoft.Crm.Setup.Server.DatabaseInstaller.Install(IDictionary stateSaver) à l’adresse
Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver) à l’adresse
Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver) à l’adresse
Microsoft.Crm.Setup.Server.ServerSetup.Upgrade(IDictionary data) sur Microsoft.Crm.Setup.ServerSetup.Run()

Cause

Ce problème se produit car l’une des conditions suivantes est vraie :

  • Le temps utilisé pour importer les fichiers de personnalisation ou pour mettre à niveau Microsoft Business Solutions - CRM dépasse la valeur par défaut OLEDBTimeout dans Microsoft Dynamics CRM pour l’ordinateur qui exécute Microsoft SQL Server.

  • Le temps utilisé pour importer les fichiers de personnalisation ou mettre à niveau Microsoft Dynamics CRM dépasse la ExtendedTimeout valeur utilisée pour les opérations de longue durée.

    Remarque

    L’entrée ExtendedTimeout de Registre sur le serveur Microsoft Dynamics CRM ne doit pas être définie sur une valeur supérieure à 2 147 483 647. Il s’agit de la valeur maximale que l’entrée de ExtendedTimout Registre peut utiliser.
    L’importation de fichiers de personnalisation peut être une opération de longue durée.

  • La taille du fichier Customization.xml est supérieure à 7,5 mégaoctets (Mo).

    Remarque

    • Le fichier Customization.xml est créé lorsque vous exportez des entités personnalisées.
    • Par défaut, Microsoft ASP.NET limite la taille de la requête HTTP à 8 Mo.

Résolution

Pour résoudre ce problème, utilisez une ou plusieurs des méthodes suivantes.

Méthode 1 : ajoutez les sous-clés de Registre OLEDBTimeout et ExtendedTimeout pour augmenter les valeurs de délai d’attente

Avertissement

De graves problèmes peuvent se produire si vous vous trompez en modifiant le Registre à l’aide de l’Éditeur du Registre ou toute autre méthode. Ces problèmes peuvent nécessiter la réinstallation du système d’exploitation. Microsoft ne peut pas garantir que ces problèmes puissent être résolus. Vous assumez l’ensemble des risques liés à la modification du Registre.

  1. Sélectionnez Démarrer, Exécuter, tapez regedit, puis sélectionnez OK.

  2. Trouvez la sous-clé de Registre suivante :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

  3. Cliquez avec le bouton droit sur MSCRM, pointez sur Nouveau, puis sélectionnez Valeur DWORD pour créer une valeur DWORD.

  4. Renommez la valeur DWORD en la valeur OLEDBTimeout.

    Remarque

    Cette valeur respecte la casse.

  5. Cliquez avec le bouton droit sur la valeur DWORD, puis sélectionnez Modifier.

  6. Dans la boîte de dialogue Modifier la valeur DWORD , tapez 86400 dans la zone Données de la valeur , sélectionnez Décimal dans l’option Base , puis sélectionnez OK.

    Remarque

    Selon les exigences de l’ordinateur exécutant SQL Server et le nombre de fichiers de personnalisation, la valeur peut être supérieure à 86400. La valeur de 86400 équivaut à 24 heures. Cette opération ne doit être effectuée que temporairement ou en tant qu’étape de résolution des problèmes. La valeur recommandée est comprise entre 30 et 300. Le fait de laisser ce paramètre trop élevé peut entraîner des problèmes de performances.

  7. Cliquez avec le bouton droit sur MSCRM, pointez sur Nouveau, puis sélectionnez Valeur DWORD pour créer une valeur DWORD.

  8. Renommez la valeur DWORD en valeur ExtendedTimeout.

  9. Cliquez avec le bouton droit sur la valeur DWORD, puis sélectionnez Modifier.

  10. Dans la boîte de dialogue Modifier la valeur DWORD , tapez 1000000 dans la zone Données de la valeur, puis sélectionnez OK.

    Remarque

    • Dans la zone Données de la valeur , vous pouvez taper une valeur supérieure à 1 000 000. Toutefois, ne tapez pas une valeur supérieure à 2 147 483 647. Il s’agit d’une 0x7FFFFFFF hexadécimale.
    • IMPORTANT : si cette clé existe déjà, notez la valeur actuelle. Une fois que vous avez terminé l’importation ou la mise à niveau pour Microsoft Dynamics CRM, définissez de nouveau la valeur de cette clé sur la valeur d’origine ou supprimez la clé si elle n’existait pas auparavant. La valeur OLEDBTimeout par défaut est de 30 secondes.

Méthode 2 - Modifier les paramètres dans deux fichiers Web.config différents

  1. Sélectionnez Démarrer, Tous les programmes, Outils d’administration, puis Gestionnaire des services Internet (IIS).

  2. Développez le nom du serveur, puis développez Sites web.

  3. Cliquez avec le bouton droit sur le site web Microsoft CRM, puis sélectionnez Ouvrir.

  4. Cliquez avec le bouton droit sur le fichier Web.config , sélectionnez Ouvrir avec, puis sélectionnez Bloc-notes.

  5. Dans le Bloc-notes, recherchez la ligne suivante.

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

  6. Modifiez executionTimeout="3600" et change maxRequestLength="20000".

  7. Enregistrez, puis fermez le fichier Web.config .

  8. Dans le répertoire dans lequel vous avez ouvert le fichier Web.config , ouvrez le dossier MSCRMServices.

  9. Cliquez avec le bouton droit sur le fichier Web.config , sélectionnez Ouvrir avec, puis sélectionnez Bloc-notes.

  10. Dans le Bloc-notes, recherchez la ligne suivante.

    <httpRuntime maxRequestLength="8192"/>

  11. Modifiez maxRequestLength="20000".

  12. Enregistrez, puis fermez le fichier Web.config .

    Importante

    Une fois l’action qui nécessite les modifications ci-dessus apportées au fichier web.config , ces paramètres doivent être réinitialisés à leurs valeurs par défaut.

Informations supplémentaires

Valeur OLEDBTimeout

L’unité de la OLEDBTimeout valeur est secondes. Par défaut, la OLEDBTimeout valeur est 30 secondes. La OLEDBTimeout valeur contrôle la valeur du délai d’attente SQL utilisée pour une requête SQL unique. La valeur augmentée OLEDBTimeout est utile lorsque le serveur SQL est surchargé. En outre, le traitement de la requête prend plus de temps.

Valeur ExtendedTimeout

L’unité de la ExtendedTimeout valeur est de millisecondes. Par défaut, la ExtendedTimeout valeur est 1000000 millisecondes. La ExtendedTimeout valeur contrôle la valeur ASP.NET délai d’attente utilisée pour les demandes d’importation. La valeur du délai d’attente doit être supérieure au temps nécessaire pour terminer l’ensemble du processus d’importation. La valeur accrue ExtendedTimeout est utile lorsque le processus d’importation prend beaucoup de temps.

Remarque

Lorsque les performances du serveur SQL sont lentes ou qu’il existe de nombreux fichiers de personnalisation à importer, le processus d’importation prend beaucoup de temps.