Wie kann ich feststellen, wie viele SQL-Verbindungen I in einem Windows-Dienst geöffnet haben?

StackOverflow https://stackoverflow.com/questions/96431

Frage

Ich sehe einige Fehler, die eine „Verbindung Leck“ anzeigen würde. Das heißt, Verbindungen, die nicht ordnungsgemäß geschlossen wurden und der Pool wird knapp. Also, wie gehe ich über diese instrumentiert, genau zu sehen, wie viele sind offen zu einem bestimmten Zeitpunkt?

War es hilfreich?

Lösung

Wenn Sie .net verwenden, gibt es die .NET-Datenprovider für SQL Server in PerfMon. Sie können dort bei NumberOfPooledConnections aussehen

Andere Tipps

sp_who2 gespeicherte Prozedur in der Master-Tabelle ist für diesen aus einer Datenbank Seite schön. Es wird Ihnen Verbindungen zur Datenbank zeigen. Wenn Sie mehr Daten suchen versuchen Profilierung als auch.

Implementieren Sie einen Dienst, der alle Verbindungen erstellt, geöffnet und durch geschlossen. Halten Sie einen Zähler gibt. Melden Sie sich mit Ihrer Logging-Framework jedes Mal, wenn eine Verbindung geöffnet oder geschlossen wird.

Sie können den Profiler-Tool verwenden, um alle bestehenden und das Öffnen und Schließen von Verbindungen

verfolgen

Sie können Profiler von Enterprise Manager öffnen

Wenn Sie SQL 2000 verwenden, können Sie überprüfen, in SQL 2000 Enterprise Manager:

  

, um das Fenster Aktuelle Aktivität zu sehen   SQL Server Enterprise Manager, erweitern   eine Server-Gruppe, und erweitern Sie dann ein   Server. Erweitern Sie Verwaltung, und dann   erweitert Aktuelle Aktivität. klicken Sie auf Prozess   Die Info.

     

Die aktuelle Serveraktivität ist   im Detailbereich angezeigt.

( http://technet.microsoft.com/en-us/ Bibliothek / cc738560.aspx )

(Von Google-Suche: SQL 2000 aktuelle Aktivität)

Sie könnten sp_who2 in SQL Server Management Studio oder Query Analyzer ausführen, um alle Ihre curent Verbindungen zu sehen. Das ist SQL Server. Ich bin mir nicht sicher, welche RDBMS, dass Sie verwenden.

Suchen Sie auch in Ihrem Code und stellen Sie sicher, dass Sie eine Verbindung zu schließen, sobald Sie es nicht mehr benötigen. Seien Sie anal darüber!

Mit der „using“ Anweisung Ihre Verbindungen zu gewährleisten, sind immer geschlossen, und Sie werden dieses Problem nie wieder haben:

using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top