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 :)
}
}
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 = '...']' '? –
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
Ich denke [dieser Beitrag ] ist die Antwort [1] [1]. http://stackoverflow.com/a/8575390/284758 –