2010-08-31 5 views
1

Lorsque j'essaie de me connecter à une base de données qui s'ouvrait précédemment avec une connexion SQL, j'obtiens une erreur "Fichier utilisé". Process Explorer me dit que sqlservr est toujours en possession du fichier. Des idées sur la façon d'obtenir SQL pour libérer le fichier à partir du code vb.net 2010?Erreur "Fichier utilisé" de vb.net

Répondre

0

Après avoir fermé la connexion que vous devez appeler

SqlConnection.ClearPool 

ou

SqlConnection.ClearAllPools 

afin de libérer les fichiers du SqlServer.

+0

BitKFu, c'était tout. Merci, je ne savais pas ClearPool existé, 26 heures de recherche est maintenant terminée. Merci encore. –

+0

Bonjour Brad, alors acceptez-vous la réponse s'il vous plaît? – BitKFu

0

Quel fichier est-ce? Est-ce un fichier qui est normalement géré en interne par le serveur SQL? Si c'est le cas, vous devrez probablement demander au serveur SQL de se fermer avant de pouvoir ouvrir le fichier.

Vous pouvez également vouloir examiner les raisons pour lesquelles vous souhaitez accéder à un tel fichier. Si c'est à des fins de sauvegarde, il est presque toujours préférable d'utiliser les services de votre base de données pour effectuer des sauvegardes, au lieu d'essayer de le faire vous-même.

+0

Merci Greg, j'ai une application qui ouvre une base de données relative à un ensemble de données particulier, puis une fois terminée l'utilisation peut vouloir ouvrir une autre base de données et travailler dessus, puis vouloir revenir en arrière et travailler sur le premier base de données et c'est là qu'il se décolle comme la première base de données est toujours détenue par SQL. Un peu comme Word ou Excel. Ce qui est également étrange, c'est que lorsque je compile et exécute ce programme sur mon ordinateur portable XP, il ouvre et ferme les fichiers toute la journée sans problème? –

+0

Je ne sais toujours pas si vous demandez à votre serveur SQL d'ouvrir le fichier ou si vous essayez d'ouvrir le fichier disque proprement dit. –

+0

Je pourrais faire cela mal, mais j'utilise un SqlDataAdapter pour remplir le DataTable avec la chaîne de connexion à la base de données. Après avoir rempli le DataTable, je ferme la connexion avec close() mais SQL Server conserve la base de données en cours d'utilisation. –