Запрос: используя XEvents API из SQL, я должен извлечь и проанализировать журналы событий. Я персонализировал этот сеанс «QuickSessionT SQL», чтобы он только регистрировал процедуры или запросы. Приведенный ниже код работает просто отлично, за исключением того, что, как только он входит в первый блок foreach, он никогда не уходит, он просто ожидает наступления событий, даже если нет другого события для повторения. Он создает бесконечное l oop ...
Если я выполню запрос SQL, то он генерирует событие, и foreach будет повторять это событие в реальном времени.
Я пытался сломать его, но я не мог найти правильное решение.
Кто-нибудь имел дело с этим раньше?
//Connection string
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
csb.DataSource = @"DESKTOP-85BSKEM\MSSQLSERVER2016";
csb.InitialCatalog = @"master";
csb.IntegratedSecurity = true;
//Session name
string sessionName = "QuickSessionTSQL";
SqlConnection sqlConnection = new SqlConnection(csb.ConnectionString);
SqlStoreConnection connection = new SqlStoreConnection(sqlConnection);
BaseXEStore store = new XEStore(connection);
Session s = store.CreateSession(sessionName);
s.Start();
QueryableXEventData xEvents = new QueryableXEventData(csb.ConnectionString, sessionName, EventStreamSourceOptions.EventStream, EventStreamCacheOptions.DoNotCache);
foreach (var evt in xEvents)
{
foreach (PublishedEventField fld in evt.Fields)
{
string fieldName = fld.Name;
string fieldValue = fld.Value.ToString();
Debug.WriteLine(fieldName + " " + fieldValue);
}
}