Ist es möglich, ein globales Httpmodulee in IIS zu schreiben und SQL zu protokollieren

Ist es möglich, ein globales Httpmodulee in IIS zu schreiben und alle SQL-Anfragen von allen .NET-Anwendungen zu protokollieren? Wenn ja wo soll ich anfangen

Ich habe einige Werkzeuge da draußen gesehen wie http://newrelic.com das mach das. Ihr Tool protokolliert alle SQL und erfordert nicht, dass ich einen speziellen Code in meine Apps setzen. In der Tat protokolliert es Info aus allen Apps.

Wenn Sie SQL-Anfragen protokollieren, benötigen Sie eines der folgenden:

  1. Eine benutzerdefinierte dataschichtklasse, die Sie für alle SQL-Anfragen verwenden, und Sie können jeden Anruf protokollieren. Erstellen Sie beispielsweise eine class SQLHelper mit der Methode ExecuteQuery , die SQLCommand.ExecuteQuery , dann nimmt die Abfrage über und protokolliert sie. Dann müssen Sie diszipliniert werden, um sicherzustellen, dass jeder einzelne SQL-Aufruf durch Ihre Helfer-class weitergeleitet wird.
  2. Verwenden eines Frameworks wie LINQ-To-SQL oder Entity Framework, mit dem Logging-Tools eingebaut sind, beispielsweise über die DataContext.Log Eigenschaft.
  3. Verwenden Sie SQL server Profiler mit entsprechenden Einstellungen, um die Ablaufverfolgung von SQL-Anfragen zu erfassen, die für eine spätere Verarbeitung in eine file oder eine Tabelle abgelegt werden können.

Sie können nicht alle Standard-ADO.Net SQL-Anfragen von einem .NET globalen HTTP-module erfassen, da Sie keine Kenntnisse oder Zugriff auf alle aktuellen Verbindungen und Befehle haben, die ausgeführt werden.