Message d’erreur lorsque vous demandez une page ASP de page qui se connecte à une base de données Access dans IIS 7.0 : « Erreur du moteur de base de données Microsoft JET '80004005' »

Important Cet article contient des informations vous expliquant comment baisser les paramètres de sécurité ou comment désactiver certaines fonctions de sécurité sur un ordinateur. Vous pouvez apporter ces modifications pour contourner un problème spécifique. Cet article contient des informations vous expliquant comment baisser les paramètres de sécurité ou comment désactiver certaines fonctions de sécurité sur un ordinateur. Si vous implémentez cette solution de contournement, prenez toutes les mesures appropriées pour protéger l'ordinateur.

Symptômes

Envisagez le scénario suivant. Sur un serveur Web qui exécute Microsoft Internet Information Services (IIS) 7.0, vous hébergez une page active server (pages ASP) qui se connecte à une base de données. Le fournisseur de données de page ASP est le fournisseur de données Microsoft.Jet.OLEDB.4.0. La source de données de page ASP est un fichier de base de données (.mdb) Microsoft Access. Dans ce scénario, le message d’erreur suivant peut s’afficher lorsque vous demandez la page ASP :
Erreur de moteur de base de données Microsoft JET '80004005'

Erreur non spécifiée
Remarque Vous rencontrerez un message d’erreur similaire lorsque vous utilisez le des opérations suivantes :
  • Une base de données Microsoft Access au format de fichier Access 2007 (.accdb)
  • Le fournisseur de données Microsoft.ACE.OLEDB.12.0

Cause

Ce problème peut se produire si IIS 7.0 est configuré pour charger le profil utilisateur actuel pour une identité de pool d’applications. Cela peut entraîner des problèmes de compatibilité avec les applications ASP héritées et des applications ADO, car l’utilisateur actuel n’est peut-être pas des autorisations suffisantes pour écrire dans le répertoire temporaire.

Résolution

Pour résoudre ce problème, vous devez ajouter les entrées de contrôle d’accès correct dans le répertoire temporaire de l’identité du processus. Pour ce faire, suivez les étapes correspondant à votre système d’exploitation.

Windows Server 2008 et Windows Vista avec Service Pack 1 ou versions ultérieures

Pour résoudre ce problème sur un serveur Web IIS 7.0 s’exécutant sur Windows Server 2008 ou Windows Vista avec Service Pack 1 ou une version ultérieure, procédez comme suit :
  1. Cliquez sur Démarrer, sur Tous les programmes, sur Accessoires, cliquez sur invite de commandeset puis cliquez sur Exécuter en tant qu’administrateur.
  2. Lorsque vous y êtes invité pour un mot de passe administrateur ou à confirmer une opération, tapez le mot de passe ou cliquez sur Continuer.
  3. Tapez la commande suivante et appuyez sur ENTRÉE :
    icacls, %SystemDrive%\Windows\Temp/Grant Users:(CI)(S,WD,AD,X)

    Remarque Cette commande permet à chaque utilisateur de créer des fichiers et des répertoires dans le répertoire temporaire.
  4. Tapez la commande suivante et appuyez sur ENTRÉE :
    icacls, %SystemDrive%\Windows\Temp/Grant OWNER":(OI)(CI)(IO)(F) de créateur »

    Remarque L’utilisateur qui crée un fichier ou un répertoire dans le répertoire temporaire est le créateur propriétaire. L’entrée de contrôle d’accès propriétaire créateur accorde un contrôle complet de l’utilisateur sur le fichier ou le répertoire. Autres utilisateurs ne peut pas accéder à ces fichiers et répertoires parce qu’ils ne sont pas le propriétaire créateur.
Windows Vista RTM

Pour résoudre ce problème sur un serveur Web IIS 7.0 qui s’exécute sur Windows Vista RTM, procédez comme suit :
Remarque L’identité du processus est Service réseau par défaut sur Windows Vista RTM, et le répertoire temporaire est % windir%\ServiceProfiles\NetworkService\AppData\Local\Temp.
  1. Cliquez sur Démarrer, sur Tous les programmes, sur Accessoires, cliquez sur invite de commandeset puis cliquez sur Exécuter en tant qu’administrateur.
  2. Lorsque vous y êtes invité pour un mot de passe administrateur ou à confirmer une opération, tapez le mot de passe ou cliquez sur Continuer.
  3. Tapez la commande suivante et appuyez sur ENTRÉE :
    icacls, %windir%\serviceprofiles\networkservice\AppData\Local\Temp/Grant Users:(CI)(S,WD,AD,X)

    Remarque Cette commande permet à chaque utilisateur de créer des fichiers et des répertoires dans le répertoire temporaire.
  4. Tapez la commande suivante et appuyez sur ENTRÉE :
    icacls, %windir%\serviceprofiles\networkservice\AppData\Local\Temp/Grant OWNER":(OI)(CI)(IO)(F) de créateur »

    Remarque L’utilisateur qui crée un fichier ou un répertoire dans le répertoire temporaire est le créateur propriétaire. L’entrée de contrôle d’accès propriétaire créateur accorde un contrôle total du fichier ou du répertoire. Autres utilisateurs ne peut pas accéder à ces fichiers et répertoires parce qu’ils ne sont pas le propriétaire créateur.

Solution de contournement

Pour résoudre ce problème, utilisez la méthode qui est décrite dans la section « Résolution ». Toutefois, si vous ne souhaitez pas ajouter des entrées de contrôle d’accès au répertoire temporaire de l’identité du processus, vous pouvez contourner le problème en désactivant la propriété loadUserProfile pour le pool d’applications. Lorsque cette propriété est désactivée, IIS 7.0 ne charge pas le profil de l’utilisateur actuel pour le pool d’applications.

Important Si vous désactivez cette propriété, un risque de sécurité peut être créé. Assurez-vous que vous comprenez et évaluez les risques avant d’implémenter cette solution de contournement.

Pour désactiver la propriété loadUserProfile pour le pool d’applications, modifiez le fichier ApplicationHost.config. L’exemple suivant montre comment effectuer cette opération.
<applicationPoolDefaults>    <processModel identityType="NetworkService" loadUserProfile="false" />
</applicationPoolDefaults>

Références

Pour plus d’informations sur le fichier temporaire des autorisations de répertoire lorsque vous exécutez une requête de base de données dans une page ASP, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

315456 vous recevez un message d’erreur de résultats de base de données lorsque vous vous connectez à une base de données à partir d’une page ASP dans FrontPage

À l’aide d’ASP classique avec les bases de données Microsoft Access sur IIS 7.0 et IIS 7.5

http://learn.iis.net/page.aspx/563/using-classic-asp-with-microsoft-access-databases-on-iis-70-and-iis-75/
Propriétés

ID d'article : 926939 - Dernière mise à jour : 17 janv. 2017 - Révision : 1

Commentaires