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é.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top