2015-10-14 2 views
0

Notre code est simpleconnexion SQL aléatoire ne peut pas être question établie

using (var context = dbNewsEntities.CreateContext()) 
{ 
      CheckClient(clientId, context); 

      var articles = context.GetArticlesForRSS(clientId, 0, ArchiveStartDays, false); 
} 

nous obtenons des questions au hasard de connexion SQL. J'ai utilisé windbg pour vérifier la SqlConnection, et en effet il y a 100 connexions (par défaut) dans le pool. Toutefois, lorsque j'utilise la méthode décrite here pour vérifier ces connexions, elles sont toutes fermées. (car l'objet _innerConnection est System.Data.ProviderBase.DbConnectionClosedNeverOpened, pas certaines méthodes que nous faisions). Que va-t-il se passer lorsqu'il y a 100 connexions fermées dans la piscine?

Je suppose que le code C# en choisira un autre que celui-ci. Ai-je raison?

Merci beaucoup

+0

Quelle est l'exception exacte que vous obtenez? –

Répondre

0

Désolé, maintenant, je compris que notre code est pas aussi simple que je mets là-bas. Il s'est avéré qu'il y avait du code caché dans une autre fonction, qui n'était pas correctement fermée. Si aide tout le monde, vous pouvez utiliser:

SELECT 
    DBID, 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections, 
    loginame as LoginName 
FROM 
    sys.sysprocesses 
WHERE 
    dbid > 0 
GROUP BY 
    dbid, loginame 

Pour voir comment le nombre de connexions dans la base de données, si est pas correctement attrapée l'exception de votre système en direct, puis en windbg, vous pouvez utiliser

.foreach (ex {!dumpheap -type System.Data.EntityException -short}){.echo "********************************";!pe ${ex} } 

Cette vous imprimera les exceptions et empiler les traces dont vous avez besoin.