3

J'ai une application C# qui se connecte à une instance nommée SQL Express sur la machine locale en utilisant OleDbConnection:connexion OleDB travailler uniquement lors du débogage

_connection = new OleDbConnection(_strConn); 
_connection.Open(); 

_strConn is something like this: "Provider=sqloledb;Data Source=.\NAMEDINSTANCE;Initial Catalog=dbname;User Id=sa;Password=password;" 

Si je déboguer l'application, la connexion fonctionne très bien. Si j'exécute l'application à partir de Windows Explorer (la même compilation de débogage), j'obtiens une "OleDBException OleDBException: Expiration du délai d'expiration expiré" dans la ligne Open() après 30 secondes. La chose étrange est l'exception se produit même si j'attache le débogueur à l'exe. Je peux voir que la chaîne de connexion est correcte et tout semble bien. Je ne peux pas affiner les informations supplémentaires dans le journal des erreurs SQL Express ou SQL Activity Monitor non plus.

Si elle aide, voici l'exception:

System.Data.OleDb.OleDbException: Login timeout expired 
    at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) 
    at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
    at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) 
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    at System.Data.OleDb.OleDbConnection.Open() 

J'imagine que trouver la question avec les informations que je donne ici pourrait être difficile, mais je ne sais pas où regarder ou ce que d'autres tests à faire, donc toutes les idées sur ce que cela pourrait être ou quel test je pourrais faire pour découvrir sera vraiment apprécié.

+0

Voulez-vous dire que lorsque vous ne déboguez pas, l'application fonctionne à partir d'IIS? – Jay

+0

Non, c'est une application WinForms. En d'autres termes: si j'appuie sur F5 dans VS cela fonctionne. Si je double-clique sur l'exe dans Windows Explorer, il échoue. Si je configure VS pour démarrer l'exe et attacher le débogueur, il échoue aussi. –

+0

Ma meilleure estimation serait que vous êtes à court de connexions simultanées. Express ne permet que 5 je pense. Si vous avez l'IDE ouvert ainsi qu'un ou deux autres outils tels que Management Studio, vous atteindrez peut-être 5. Si vous avez quelque chose comme la mise en commun des connexions activée, il se peut que tous les 5 soient liés quelque part? – Cobusve

Répondre

0

Je l'ai corrigé. Malheureusement, je ne sais pas vraiment comment: j'ai supprimé le dossier de sortie, réinitialisé certaines références de projet, reconfiguré plusieurs choses sur SQL Express, redémarré la machine, etc. À un certain point, il a commencé à fonctionner correctement. Cela m'ennuie toujours de ne pas être capable de découvrir ce que faisait OleDb pendant 31 secondes lors de la connexion, mais le problème est parti maintenant (jusqu'à présent).

Merci pour votre aide.

Questions connexes