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

War es hilfreich?

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

obwohl

TBH, 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top