EventLogQuery: как сформировать строку запроса?

У меня есть следующий код:

string query = "???";

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

Я пытаюсь выяснить, что мне нужно установить запрос, чтобы найти все записи с источником "SQLSERVERAGENT".

1 ответ

Я только что потратил час, пытаясь решить подобное для себя, и подумал, что смогу помочь с решением для всех, кто придет таким образом. Комментарии должны быть достаточно понятными.

  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 :) 
            }
        }
Другие вопросы по тегам