.NET ODBC Connection Pooling
-
02-07-2019 - |
Frage
Ich öffne eine Verbindung wie folgt aus:
Using conn as New OdbcConnection(connectionString)
conn.Open()
//do stuff
End Using
Wenn das Verbindungsspooling aktiviert ist, wird die Verbindung nicht physisch geschlossen, aber an den Pool freigegeben und wird wiederverwendet erhalten. Wenn es deaktiviert ist, wird es physisch geschlossen werden.
Gibt es eine Möglichkeit zu wissen, programmatisch , wenn Connection Pooling aktiviert ist oder nicht? und die Anzahl der verwendeten und nicht verwendeter Verbindungen zur Zeit offen im Pool?
EDIT:. Ich brauche diese Informationen zu erhalten, aus dem Programm, kann ich nicht gehen und überprüfen Sie es manuell auf jedem einzelnen PC, auf dem das Programm eingesetzt werden
Lösung
Sieht aus wie Sie gerade diesen Registrierungsschlüssel lesen:
[HKeyLocalMachine] \ SOFTWARE \ ODBC \ ODBCINST.INI \ SQL Server \ CPTimeout
(oder eine Variante davon, je nach Betriebssystem und Benutzerkonto). Wenn der Wert 0 ist, dann ist das Verbindungsspooling deaktiviert. Wenn es über 0 ein beliebiger Wert ist, wird es aktiviert ist.
Siehe auch:
http://msdn.microsoft.com/en-us/library /ms810829.aspx
Ich bin mir nicht sicher über die Anzahl der offenen Verbindungen zu bekommen. Einfach nur neugierig: Warum müssen Sie die Nummer kennen
?Andere Tipps
MSDN als in ausführlichen Leitlinien zu diesem
konfigurieren Connection Pooling von der Datenquellen-Administrator
[schnipp]
Alternativ können Sie die ODBC-Start Datenquellen-Administrator bei der Run Prompt. In der Taskleiste klicken Sie auf Start, Ausführen klicken und dann odbcad32 geben.
Die Registerkarte Verbindung für die Verwaltung Pooling wird in den ODBC-Daten gefunden Source Administrator Dialogfeld in Version ODBC 3.5 und höher. Konfigurieren Connection Pooling von die Registry
Für Versionen vor Version 3.5 die ODBC-Kernkomponenten, müssen Sie Ändern Sie die Registrierung direkt zu steuert das Verbindungs-Pooling CPTimeout Wert.
Pooling wird immer von Datenserver-Software abgewickelt. Der ganze Sinn dafür ist, dass in .NET sollten Sie nicht darum kümmern müssen (zum Beispiel ist der Grund, warum Sie immer die SqlConnection verwenden sollen, wenn sie mit SQL Server arbeiten - ein Teil davon ist, dass es die Verbindung Pooling ermöglicht) <. / p>
Update
Unter Vista, geben Sie einfach „ODBC“ im Startmenü, und es wird die App für Sie.
Update Nach der Klärung von OP
Im Hinblick auf die Feststellung, ob Verbindungspooling auf jeder Maschine aktiviert ist, Blick auf die MSDN-Richtlinien ich sagen whould Sie am besten am besten wäre, wenn Sie die Registrierungswerte prüfen (Siehe dieser Artikel für Zeiger auf Registry-Zugriff).
obwohlTBH, es wäre denn, der Client-Rechner wirklich beschissen ist, würde ich vielleicht nicht einmal die Mühe .. AFAIK es ist standardmäßig aktiviert, und die Öffnung Verbindungen auf einem Client-Rechner (nach meiner Erfahrung) haben nie eine große Sache gewesen. Es ist nur wirklich wird eine große Sache, wenn viel geöffnet werden.
Um die Anzahl der offenen Verbindungen auf jeder db zu bestimmen, versuchen Sie diese SQL - ich habe es aus einem Dokument im 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
Spids <= 50 werden von SQLServer verwendet. So dass die obige SQL würden Sie die Verbindung von Ihren Programmen verwendet erzählen.