-
Mais la il y a un truc qui m'intrigue .....
Dans mon SQL Server, dans la liste des processus, si je regarde les connexions qui sont créées, il y a une colonne Application (qui donne, j'imagine, l'application qui utilise la connexion) et dans cette colonne, c'est "Microsoft (R) .NET Framework" ....
ce n'est donc pas la dll qui fait la connexion mais l'application. C'est donc bien le pool de connexion qui fait le travail. Mais alors comment y acceder, si je n'ai pas de chaine de connexion .....
-
Si tu rajoute min pool size=5;max pool size=40; à la fin de ta chaine de connextion tu limite le pool.
Sachant que pour chaque url de connection, sqlserver creer un pool pour cette connection. apres faut configurer ce pool pour voir le nombre de connection maximum simultane il accepte.
exemple de chaine :
server=MONSERVEUR;database=mabase;UID=login;pwd=motdepasse;min pool size=10;max pool size=40;
-
oui c'est une tres bonne idée mais comme je l'ai dit précédemment, je n'ai pas la main sur cette chaine de connexion puisqu'elle est définie dans la dll, c'est la dll qui effectue les connexions
de mon programme, je ne lui fait que passer les identifiants et mdp
-
Bon j'ai du neuf.
En fouinant dans le code de la DLL (qui est assez lourd et surlaquelle je n'ai aucune doc) j'ai pu apercevoir une méthode Disconnect().
Et en effet lorsque je l'appelle, ca me coupe pas mes connexions, mais au moins, au garbage collector, elles sont virées.
Donc c'est une semi victoire sachant que je ne comprend tjrs pas pourquoi marshall.ReleaseComObject ne vire pas ces connexions.
Et que en plus j'ai des connexion dont je ne connais pas la provenance et donc que je ne peux pas tuer avec Disconnect() (j'arrive pas a déterminer si elles sont dans la dll et disconnect ne les tue pas ou si elles sont dans le code de mon projet) mais ca vous pouvez pas m'aider :) faut que j'investigue.
Mais ma conclusion, c'est que c'est tres mal foutu
Je met qd meme le post en résolu.