Wie kann ich feststellen, wie viele SQL-Verbindungen I in einem Windows-Dienst geöffnet haben?
-
01-07-2019 - |
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?
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
verfolgenSie 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