コード例 #1
0
ファイル: EventList.cs プロジェクト: tbelbek/expressprofiler
        public void AppendFromFile(int cnt, string filename, bool ignorenonamesp, bool transform)
        {
            var x   = new XmlSerializer(typeof(CEvent[]));
            var fs  = new FileStream(filename, FileMode.Open);
            var a   = (CEvent[])x.Deserialize(fs);
            var lex = new YukonLexer();

            foreach (var e in a)
            {
                if (e.TextData.Contains("statman") || e.TextData.Contains("UPDATE STATISTICS"))
                {
                    continue;
                }
                if (ignorenonamesp && e.ObjectName.Length == 0)
                {
                    continue;
                }
                if (transform)
                {
                    AddEvent(cnt, e.DatabaseID, e.DatabaseName
                             , e.ObjectName.Length == 0 ? 0 : e.ObjectID
                             , e.ObjectName.Length == 0 ? "" : e.ObjectName
                             , e.ObjectName.Length == 0 ? lex.StandardSql(e.TextData) : e.TextData, e.CPU, e.Reads, e.Writes,
                             e.Duration, e.Count, e.RowCounts);
                }
                else
                {
                    AddEvent(cnt, e.DatabaseID, e.DatabaseName, e.ObjectID, e.ObjectName, e.TextData, e.CPU, e.Reads,
                             e.Writes, e.Duration, e.Count, e.RowCounts);
                }
            }

            fs.Dispose();
        }
 private void AddTokens(string tokens, YukonLexer.TokenKind tokenkind)
 {
     StringBuilder curtoken = new StringBuilder();
     for (int i = 0; i < tokens.Length; i++)
     {
         if (tokens[i] == ',')
         {
             string s = curtoken.ToString().ToLower();
             if (!m_Words.ContainsKey(s))
                 m_Words.Add(s, tokenkind);
             curtoken = new StringBuilder();
         }
         else
         {
             curtoken.Append(tokens[i]);
         }
     }
     if (curtoken.Length != 0) m_Words.Add(curtoken.ToString(), tokenkind);
 }
コード例 #3
0
        public SqlServerProfiler(string server, string database
                                 , string username, string password)
        {
            this.m_server              = server;
            this.m_database            = database;
            this.m_username            = username;
            this.m_password            = password;
            this.m_integrated_security = string.IsNullOrWhiteSpace(username);

            this.m_isWindows = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(
                System.Runtime.InteropServices.OSPlatform.Windows
                );

            if (this.m_integrated_security && !this.m_isWindows)
            {
                throw new System.ArgumentException($"Username is NULL or empty. Cannot use integrated-security on non-windows platform.");
            }

            if (!this.m_integrated_security)
            {
                if (password == null)
                {
                    throw new System.ArgumentException($"{nameof(password)} cannot be NULL when integrated security is false.");
                }
            } // End if (!integratedSecurity)


            this.m_Lex = new YukonLexer();
            //this.m_events = new Queue<ProfilerEvent>(10);
            this.m_events          = new System.Collections.Concurrent.ConcurrentQueue <ProfilerEvent>();
            this.m_timer           = new System.Timers.Timer(1000);
            this.m_timer.AutoReset = false;
            this.m_timer.Elapsed  += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
            this.m_timer.Start();

            this.m_columns = new System.Collections.Generic.List <PerfColumn>();
            this.m_columns.Add(new PerfColumn {
                Caption = "Event Class", Column = ProfilerEventColumns.EventClass, Width = 122
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "Text Data", Column = ProfilerEventColumns.TextData, Width = 255
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "Login Name", Column = ProfilerEventColumns.LoginName, Width = 79
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "CPU", Column = ProfilerEventColumns.CPU, Width = 82, Alignment = HorizontalAlignment.Right, Format = "#,0"
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "Reads", Column = ProfilerEventColumns.Reads, Width = 78, Alignment = HorizontalAlignment.Right, Format = "#,0"
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "Writes", Column = ProfilerEventColumns.Writes, Width = 78, Alignment = HorizontalAlignment.Right, Format = "#,0"
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "Duration, ms", Column = ProfilerEventColumns.Duration, Width = 82, Alignment = HorizontalAlignment.Right, Format = "#,0"
            });
            this.m_columns.Add(new PerfColumn {
                Caption = "SPID", Column = ProfilerEventColumns.SPID, Width = 50, Alignment = HorizontalAlignment.Right
            });

            // if (m_currentsettings.EventsColumns.StartTime)
            m_columns.Add(new PerfColumn {
                Caption = "Start time", Column = ProfilerEventColumns.StartTime, Width = 140, Format = "yyyy-MM-ddThh:mm:ss.ffff"
            });
            // if (m_currentsettings.EventsColumns.EndTime)
            m_columns.Add(new PerfColumn {
                Caption = "End time", Column = ProfilerEventColumns.EndTime, Width = 140, Format = "yyyy-MM-ddThh:mm:ss.ffff"
            });
            // if (m_currentsettings.EventsColumns.DatabaseName)
            m_columns.Add(new PerfColumn {
                Caption = "DatabaseName", Column = ProfilerEventColumns.DatabaseName, Width = 70
            });
            // if (m_currentsettings.EventsColumns.ObjectName)
            m_columns.Add(new PerfColumn {
                Caption = "Object name", Column = ProfilerEventColumns.ObjectName, Width = 70
            });
            // if (m_currentsettings.EventsColumns.ApplicationName)
            m_columns.Add(new PerfColumn {
                Caption = "Application name", Column = ProfilerEventColumns.ApplicationName, Width = 70
            });
            // if (m_currentsettings.EventsColumns.HostName)
            m_columns.Add(new PerfColumn {
                Caption = "Host name", Column = ProfilerEventColumns.HostName, Width = 70
            });

            // m_columns.Add(new PerfColumn { Caption = "#", Column = -1, Width = 53, Alignment = HorizontalAlignment.Right });
        } // End Constructor
        public void AppendFromFile(int cnt, string filename, bool ignorenonamesp, bool transform)
        {
            XmlSerializer x = new XmlSerializer(typeof(CEvent[]));
            FileStream fs = new FileStream(filename, FileMode.Open);
            CEvent[] a = (CEvent[])x.Deserialize(fs);
            YukonLexer lex = new YukonLexer();
            foreach (CEvent e in a)
            {
                if (e.TextData.Contains("statman") || e.TextData.Contains("UPDATE STATISTICS")) continue;
                if (!ignorenonamesp || e.ObjectName.Length != 0)
                {
                    if (transform)
                    {

                        AddEvent(cnt, e.DatabaseID, e.DatabaseName
                                 , e.ObjectName.Length == 0 ? 0 : e.ObjectID
                                 , e.ObjectName.Length == 0 ? "" : e.ObjectName
                                 , e.ObjectName.Length == 0 ?
                                                                lex.StandardSql(e.TextData) : e.TextData, e.CPU, e.Reads, e.Writes, e.Duration, e.Count,e.RowCounts);
                    }
                    else
                    {
                        AddEvent(cnt, e.DatabaseID, e.DatabaseName, e.ObjectID, e.ObjectName, e.TextData, e.CPU, e.Reads, e.Writes, e.Duration, e.Count,e.RowCounts);
                    }
                }
            }
            fs.Dispose();

        }