代码之家  ›  专栏  ›  技术社区  ›  xoxo

在C#应用程序中模仿SQL Server Profiler?

  •  3
  • xoxo  · 技术社区  · 16 年前

    我想从我的C#应用程序在数据库服务器上创建一个跟踪,就像你在SQL server Profiler中所做的那样。我发现存储过程(sys.sp_trace_create等…)似乎不适用于我的SQL管理工作室。我想知道是否有人能帮忙编码,或者我从哪里开始?!

    3 回复  |  直到 16 年前
        1
  •  3
  •   BradC    16 年前

    您是否希望这是实时的,就像Profiler本身一样?这很难做到。你基本上是在重新创建分析器。

    如果这不是必需的,我建议只调用您发现的sp_trace_create存储过程来启动服务器端跟踪,然后使用您的应用程序打开此跟踪生成的文件。

    了解其工作原理的最简单方法是运行SQL Profiler本身,设置所需的所有选项,然后单击“运行”,并立即单击“停止”。然后转到“文件”、“导出”、“脚本跟踪定义”,并选择适当的版本。

    这应该为您提供一个TSQL脚本,将所有正确的部分放在一起,包括所有跟踪事件、列等。

    分析器的更多技术历史: This old SQLMag article 有一些Profiler的历史,它在引入SQL 7.0时取代了一个名为“SQL Trace”的应用程序。

        2
  •  1
  •   brian beuning    12 年前

    如果您仍然感兴趣,请找到此代码

    public void FileToTable()
    {
        TraceServer reader = new TraceServer();
    
        ConnectionInfoBase ci = new SqlConnectionInfo("localhost");
        ((SqlConnectionInfo)ci).UseIntegratedSecurity = true;
    
        reader.InitializeAsReader(ci, @"Standard.tdf");
    
        int eventNumber = 0;
    
        while (reader.Read())
        {
            Console.Write( "{0}\n", reader.GetValue(0).ToString() );
        }
        reader.Close();        
    }
    
        3
  •  0
  •   GeekyMonkey    16 年前

    如果你使用的是LINQ to SQL,那么它生成的所有SQL命令都可以发送到输出窗口(如果你愿意,也可以记录到文件中)。请看这里: http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11