} // End Sub SetStringFilter public void StartProfiling() { this.m_events.Clear(); this.m_Conn = GetConnection(); OpenConnection(this.m_Conn); this.m_Rdr = new RawTraceReader(m_Conn); this.m_Rdr.CreateTrace(); //if (m_currentsettings.EventsColumns.BatchCompleted) { m_Rdr.SetEvent(ProfilerEvents.TSQL.SQLBatchCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ApplicationName, ProfilerEventColumns.HostName ); } // End if (m_currentsettings.EventsColumns.BatchCompleted) //if (m_currentsettings.EventsColumns.RPCCompleted) { m_Rdr.SetEvent(ProfilerEvents.StoredProcedures.RPCCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ObjectName , ProfilerEventColumns.ApplicationName , ProfilerEventColumns.HostName ); } // End if (m_currentsettings.EventsColumns.RPCCompleted) if (!string.IsNullOrWhiteSpace(this.m_database)) { SetStringFilter(this.m_database, StringFilterCondition.Like, ProfilerEventColumns.DatabaseName); } this.m_Rdr.SetFilter(ProfilerEventColumns.ApplicationName, LogicalOperators.AND , ComparisonOperators.NotLike, "Express Profiler"); this.m_Rdr.StartTrace(); this.m_NeedStop = false; this.m_Thr = new System.Threading.Thread(ProfilerThread) { IsBackground = true, Priority = System.Threading.ThreadPriority.Lowest }; this.m_ProfilingState = ProfilingStateEnum.psProfiling; NewEventArrived(m_EventStarted, true); m_Thr.Start(); } // End Sub StartProfiling
private void StartProfiling() { try { Cursor = Cursors.WaitCursor; m_perf.Clear(); m_first = null; m_prev = null; if (m_ProfilingState == ProfilingStateEnum.psPaused) { ResumeProfiling(); return; } if (m_Conn != null && m_Conn.State == ConnectionState.Open) { m_Conn.Close(); } InitGridColumns(); m_EventCount = 0; m_Conn = GetConnection(); m_Conn.Open(); m_Rdr = new RawTraceReader(m_Conn); m_Rdr.CreateTrace(); if (true) { if (m_currentsettings.EventsColumns.LoginLogout) { m_Rdr.SetEvent(ProfilerEvents.SecurityAudit.AuditLogin, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime ); m_Rdr.SetEvent(ProfilerEvents.SecurityAudit.AuditLogout, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.LoginName, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.ExistingConnection) { m_Rdr.SetEvent(ProfilerEvents.Sessions.ExistingConnection, ProfilerEventColumns.TextData, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.BatchCompleted) { m_Rdr.SetEvent(ProfilerEvents.TSQL.SQLBatchCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.BatchStarting) { m_Rdr.SetEvent(ProfilerEvents.TSQL.SQLBatchStarting, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.RPCStarting) { m_Rdr.SetEvent(ProfilerEvents.StoredProcedures.RPCStarting, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ObjectName, ProfilerEventColumns.ApplicationName ); } } if (m_currentsettings.EventsColumns.RPCCompleted) { m_Rdr.SetEvent(ProfilerEvents.StoredProcedures.RPCCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ObjectName , ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.SPStmtCompleted) { m_Rdr.SetEvent(ProfilerEvents.StoredProcedures.SPStmtCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ObjectName , ProfilerEventColumns.ObjectID , ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.SPStmtStarting) { m_Rdr.SetEvent(ProfilerEvents.StoredProcedures.SPStmtStarting, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ObjectName , ProfilerEventColumns.ObjectID , ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.UserErrorMessage) { m_Rdr.SetEvent(ProfilerEvents.ErrorsAndWarnings.UserErrorMessage, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.BlockedProcessPeport) { m_Rdr.SetEvent(ProfilerEvents.ErrorsAndWarnings.Blockedprocessreport, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.SPID, ProfilerEventColumns.StartTime, ProfilerEventColumns.DatabaseName, ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.SQLStmtStarting) { m_Rdr.SetEvent(ProfilerEvents.TSQL.SQLStmtStarting, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ApplicationName ); } if (m_currentsettings.EventsColumns.SQLStmtCompleted) { m_Rdr.SetEvent(ProfilerEvents.TSQL.SQLStmtCompleted, ProfilerEventColumns.TextData, ProfilerEventColumns.LoginName, ProfilerEventColumns.CPU, ProfilerEventColumns.Reads, ProfilerEventColumns.Writes, ProfilerEventColumns.Duration, ProfilerEventColumns.SPID , ProfilerEventColumns.StartTime, ProfilerEventColumns.EndTime , ProfilerEventColumns.DatabaseName , ProfilerEventColumns.ApplicationName ); } if (null != m_currentsettings.Filters.Duration) { SetIntFilter(m_currentsettings.Filters.Duration * 1000, m_currentsettings.Filters.DurationFilterCondition, ProfilerEventColumns.Duration); } SetIntFilter(m_currentsettings.Filters.Reads, m_currentsettings.Filters.ReadsFilterCondition, ProfilerEventColumns.Reads); SetIntFilter(m_currentsettings.Filters.Writes, m_currentsettings.Filters.WritesFilterCondition, ProfilerEventColumns.Writes); SetIntFilter(m_currentsettings.Filters.CPU, m_currentsettings.Filters.CpuFilterCondition, ProfilerEventColumns.CPU); SetIntFilter(m_currentsettings.Filters.SPID, m_currentsettings.Filters.SPIDFilterCondition, ProfilerEventColumns.SPID); SetStringFilter(m_currentsettings.Filters.LoginName, m_currentsettings.Filters.LoginNameFilterCondition, ProfilerEventColumns.LoginName); SetStringFilter(m_currentsettings.Filters.DatabaseName, m_currentsettings.Filters.DatabaseNameFilterCondition, ProfilerEventColumns.DatabaseName); SetStringFilter(m_currentsettings.Filters.TextData, m_currentsettings.Filters.TextDataFilterCondition, ProfilerEventColumns.TextData); SetStringFilter(m_currentsettings.Filters.ApplicationName, m_currentsettings.Filters.ApplicationNameFilterCondition, ProfilerEventColumns.ApplicationName); m_Cmd.Connection = m_Conn; m_Cmd.CommandTimeout = 0; m_Rdr.SetFilter(ProfilerEventColumns.ApplicationName, LogicalOperators.AND, ComparisonOperators.NotLike, "Express Profiler"); m_Cached.Clear(); m_events.Clear(); m_itembysql.Clear(); lvEvents.VirtualListSize = 0; StartProfilerThread(); m_servername = edServer.Text; m_username = edUser.Text; Properties.Settings.Default.ServerName = m_servername; Properties.Settings.Default.UserName = tbAuth.SelectedIndex == 0 ? "" : m_username; Properties.Settings.Default.Save(); } catch (Exception e) { MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { UpdateButtons(); Cursor = Cursors.Default; } }