2010-04-20 4 views
1

J'ai une application de bureau qui utilise l'instanciation d'utilisateur Sql. Ceci est ma chaîne de connexion:Erreur "Impossible d'ouvrir la base de données par défaut de l'utilisateur" avec "User Instance = True"

"Data Source=.\SqlExpress; 
AttachDbFilename=C:\path\file.mdf; 
Integrated Security=True; 
User Instance=True; 
Connect Timeout=100;" 

Mon application crée cette DB, télécharge une charge de données en elle à partir d'un service Web et fait alors beaucoup d'actions avec elle.

Le problème survient lorsque j'essaie de rouvrir la connexion. Je reçois un SqlException:

"Impossible base de données par défaut open utilisateur Échec de la connexion
Échec de la connexion pour l'utilisateur 'myDomain \ de myusername.".

Cette erreur n'a aucun sens dans ce contexte - Je n'ai pas de base de données par défaut. Je me connecte à une instance créée uniquement pour l'application en cours, exécutée séparément à partir de SqlExpress.

Il n'y a pas d'autre moyen de se connecter à cette base de données. Si je démarre le service SqlExpress et que je me connecte à l'instance par défaut, il ne sera pas visible. Il n'existe que pour cette application.

Le fichier sur le disque est verrouillé par le service d'instance SqlExpress s'exécutant sous l'application. Si j'arrête l'application et la redémarre, la connexion fonctionne la première fois, mais échoue à la réouverture. Si je viens d'arrêter l'application, je peux supprimer les fichiers. Mdf et recommencer, mais il se bloque toujours lorsque je rouvre la connexion. Lorsque mon application a démarré l'instance exécutée en tant que moi, mon utilisateur actuel doit avoir accès à tous les DB de l'instance.

Cela ne se produit pas pour les autres utilisateurs du même code, ce qui suggère qu'il s'agit d'un problème de configuration SQL.

Est-ce que quelqu'un a une idée de ce qui cause cela et comment le contourner?

Répondre

Questions connexes