3

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

4

3 回答 3

3

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

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

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

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

探查器的更多技术历史:这篇旧的 SQLMag 文章有一些探查器的历史,它在引入 SQL 7.0 时取代了一个名为“SQL Trace”的应用程序。

于 2008-11-18T15:46:40.550 回答
2

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

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();        
}
于 2012-12-10T03:59:55.033 回答
0

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

于 2008-11-18T16:18:32.280 回答