Regroupement de connexions .NET ODBC
-
02-07-2019 - |
Question
J'ouvre une connexion comme celle-ci:
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
Si le regroupement de connexions est activé, la connexion n'est pas physiquement fermée, mais libérée dans le pool et sera réutilisée. S'il est désactivé, il sera physiquement fermé.
Existe-t-il un moyen de savoir par programmation si le regroupement de connexions est activé ou non? et le nombre de connexions utilisées et non utilisées actuellement ouvertes dans le pool?
MODIFIER: je dois obtenir ces informations dans le programme. Je ne peux pas les vérifier manuellement sur tous les ordinateurs sur lesquels le programme sera déployé.
La solution
On dirait que vous pouvez simplement lire cette clé de registre:
[HKEYLOCALMACHINE] \ LOGICIEL \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout
(ou une variante de celle-ci, selon votre système d'exploitation et votre compte d'utilisateur). Si la valeur est 0, le regroupement de connexions est désactivé. Si cette valeur est supérieure à 0, elle est activée.
Voir:
http://msdn.microsoft.com/en-us/library /ms810829.aspx
Je ne suis pas sûr d'obtenir le nombre de connexions ouvertes. Juste curieux: pourquoi avez-vous besoin de connaître le numéro?
Autres conseils
MSDN en tant que consignes détaillées à ce sujet
Configuration du regroupement de connexions à partir de l'administrateur de la source de données
[snip]
Vous pouvez également démarrer l'ODBC. Administrateur de source de données à la course rapide. Dans la barre des tâches, cliquez sur Démarrer. cliquez sur Exécuter, puis tapez Odbcad32.
L'onglet de gestion de la connexion le regroupement est trouvé dans les données ODBC Boîte de dialogue Administrateur source dans version ODBC 3.5 et ultérieure. Configuration du regroupement de connexions à partir de le registre
Pour les versions antérieures à la version 3.5 de les composants de base ODBC, vous devez modifier le registre directement à contrôler le regroupement des connexions Valeur CPTimeout.
Le regroupement est toujours géré par le logiciel du serveur de données. En réalité, dans .NET, vous ne devriez pas avoir à vous en préoccuper (par exemple, vous devez toujours utiliser SqlConnection lorsque vous travaillez avec SQL Server. Cela permet notamment de permettre le regroupement de connexions).
Mettre à jour
Sous Vista, tapez simplement & "; ODBC &"; dans le menu Démarrer et il trouvera l'application pour vous.
Mise à jour après clarification de l'OP
Pour déterminer si le regroupement de connexions est activé sur chaque ordinateur, consultez Recommandations MSDN Je dirais que vous feriez mieux de vérifier les valeurs du registre (voir cet article pour les pointeurs sur l'accès au registre).
Cependant, à moins que les machines clientes ne soient vraiment nulles, je ne me dérangerais peut-être même pas .. Pour autant que je sache, il est activé par défaut et l'ouverture de connexions sur une machine cliente (selon mon expérience) n'a jamais été un gros problème. Cela devient vraiment un gros problème lorsque beaucoup sont ouverts.
Pour déterminer le nombre de connexions ouvertes sur chaque base de données, essayez ce sql - je l’ai tiré d’un document sur Internet
select db_name(dbid) , count(*) 'connections count'
from master..sysprocesses
where spid > 50 and spid @@spid
group by db_name(dbid)
order by count(*) desc
Les spids < = 50 sont utilisés par sqlserver. Ainsi, le sql ci-dessus vous indiquerait la connexion utilisée par vos programmes.