Comment puis-je Supprimer l'Accès Db temporaire du fichier ldb
J'ai un ASP.NET Projet. Je suis de la connexion à la DB et puis de la fermeture et de l'élimination de l'objet de connexion. Mais lorsque quelqu'un entre dans mon site, MS Access crée un temporaire dbname.ldb. Quand je veux télécharger mon fichier mdb d'origine à partir de mon serveur, il ne me laisse pas accéder au fichier mdb. Je ne peux rien faire si il n'y a ldb fichier dans le serveur. C'est le verrouillage de fichier mdb et je ne peut pas le déplacer. Quel est donc le problème? Je suis de l'ouverture de la connexion et de fermeture. Alors pourquoi ce fichier ldb pas supprimer lui-même après la fermeture de la connexion.
OriginalL'auteur Ibrahim AKGUN | 2009-06-18
Vous devez vous connecter pour publier un commentaire.
La connexion peut être laissée ouverte si les scripts se produit une erreur d'aucune sorte avant de le fermer. Vérifiez les scripts avec un des messages d'erreur personnalisés 500 page qui enregistre dans un fichier texte les erreurs et vous verrez si c'est le cas. De toute façon le fichier ldb n'est pas dangereux de sorte que vous pouvez créer un script pour supprimer une fois un jour ou deux. C'est l'un des inconvénients sur l'utilisation des applications web avec MS Access. Essayez de migrer vers MSSQL si vous pouvez le faire ou MySQL, ce dernier peut être utilisé à partir de .NET ou ASP classique avec aucun problème avec ADO ou ADO.NET avec le pilote approprié.
L'accès n'est pas buggé. Si les gens l'utiliser de façon inappropriée (comme je crois que l'aide pour n'importe quoi mais le plus trivial site web), ils ne devraient pas être surpris quand les choses fonctionnent mal. Mais ce n'est pas parce que l'Accès est buggé, mais parce qu'elle est utilisée à mauvais escient.
OriginalL'auteur backslash17
Votre application web dans IIS est de garder la connexion ouverte avec le regroupement de connexion. L'application IIS finira par fermer si il n'y a plus de connexions dans le temps IIS est configuré pour mettre fin à votre application web ou vous pouvez redémarrer l'application (et copier le fichier avant que quiconque ne pénètre dans).
C'est la seule raison de l'Accès n'est pas un bon choix de la base de données pour ce type d'application.
OriginalL'auteur Cade Roux
La
.ldb
fichier est le fichier de verrouillage pour.mdb
bases de données Access. Chaque fois que vous ouvrez une base de données, le moteur Jet créer le fichier de verrouillage et de le maintenir ouvert aussi longtemps que quelqu'un est connecté.Une fois qu'il n'y a pas d'autres clients connectés à la base de données, Jet supprime le fichier de verrouillage.
Si vous voyez le fichier de verrouillage pour une des deux raisons:
Si vérifier les journaux d'erreur de votre serveur n'a pas vous donner quoi que ce soit, essayez de vous connecter tous les accès base de données à partir de votre application dans un fichier: ajouter des informations sur le temps, de connexion et d'autres informations de débogage.
Que pourrait être un moyen facile de mettre rapidement au point le problème et de voir où et quand la connexion est ouverte.
Sinon, vous pouvez jeter un oeil à ce CodeProject article: Trouver la "Fuite" des Connexions de Base de données dans ASP.NET les Applications Web.
OriginalL'auteur Renaud Bompuis
Vous souhaitez peut-être également envisager le regroupement de connexion - lorsque vous fermez une connexion, c# en fait la garde ouverte pendant un certain temps (30 secondes? 60 secondes?) avant vraiment de clôture, dans le cas où il peut être ré-utilisé. Cela peut être un problème.
OriginalL'auteur Chris
Un hacky solution pour supprimer le .fichier ldb est de faire ce qui suit:
OriginalL'auteur Spike
Vous devez Appeler GC.Collect() après la clôture et de Disposer de l'Objet de Connexion 🙂
GC.Collect()
ne libère pas toute la base de données de serrures. Un appel explicite àDispose()
(y comprisusing
blocs) est tout ce dont vous avez besoin - des appels àClose()
sont entièrement superflu, commeClose
etDispose
faire exactement la même chose.OriginalL'auteur Gustavo Chacón Bustos