2012-09-12 15 views
8

Ich habe den folgenden Code:EventLogQuery: Wie man Abfragezeichenfolge bildet?

string query = "???"; 

EventLogQuery elq = new EventLogQuery("Application", PathType.LogName, query); 
elq.Session = new EventLogSession("x.x.x.x"); 
EventLogReader elr = new EventLogReader(elq); 

Ich versuche, herauszufinden, was ich Abfrage, um für alle Einträge mit einer Quelle von „SQLSERVERAGENT“ aussehen einstellen müssen.

+2

Wenn ich die Ereignisanzeige zum Festlegen eines Filters verwende, kann ich die XML-Rohabfrage sehen, die sie verwendet. Ich bekomme eine Zeichenfolge wie ''. Funktioniert dies (die ganze Sache, abzüglich des XML-Tags, oder nur 'Provider [@Name = '...']' '? –

+0

würde [C#: Wie Abfrage für ein Ereignisprotokoll Details mit einer bestimmten Ereignis-ID? ] (http://stackoverflow.com/questions/2462426/c-how-to-query-for-an-event-log-details-with-a-given-event-id) hilft? – Turbot

+0

Ich denke [dieser Beitrag ] ist die Antwort [1] [1]. http://stackoverflow.com/a/8575390/284758 –

Antwort

1

Ich habe gerade eine Stunde damit verbracht, ähnliches für mich selbst zu lösen und dachte, ich würde zurück mit der Lösung für jeden anderen beitragen, der auf diese Weise kommt. Die Kommentare sollten ziemlich selbsterklärend sein.

public void ReadSqlAgentEventMessages() 
     { 
      // Force culture to en-US if required, some people get a null from FormatDescription() and this appently solves it. 
      // My culture is set as en-GB and I did not have the issue, so I have left it as a comment to possibly ease someone's pain! 
      // Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 

      EventLogQuery eventlogQuery = new EventLogQuery("Application", PathType.LogName, "*[System/Provider/@Name=\"SQLSERVERAGENT\"]"); 
      EventLogReader eventlogReader = new EventLogReader(eventlogQuery); 

      // Loop through the events returned 
      for (EventRecord eventRecord = eventlogReader.ReadEvent(); null != eventRecord; eventRecord = eventlogReader.ReadEvent()) 
      { 
       // Get the description from the eventrecord. 
       string message = eventRecord.FormatDescription(); 

       // Do something cool with it :) 
      } 
     } 
Verwandte Themen