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

4

我希望从我的C#应用程序创建一个数据库服务器上的跟踪,就像在SQL Server Profiler中所做的那样。我已经找到了存储过程(例如sys.sp_trace_create等),但似乎对我的SQL管理工具无效。我想知道是否有人能够帮助编写代码,或者我应该从哪里开始?!

3个回答

3

你是否希望这是实时的,就像Profiler本身一样?那将会很困难。你基本上要重新创建Profiler。

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

了解此操作最简单的方法是运行SQL Profiler,设置所有所需选项,然后点击Run,立即点击Stop。然后转到File,Export,Script Trace Definition,并选择适当的版本。

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

有关Profiler的更多技术历史:这篇旧的SQLMag文章介绍了Profiler的一些历史,它取代了一个名为“SQL Trace”的应用程序,该应用程序在引入SQL 7.0时被替换。


3
如果您仍然感兴趣,找到了这段代码。
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();        
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接