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

发布于 2024-07-08 17:35:36 字数 148 浏览 9 评论 0原文

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

I want to create a trace on a database server from my C# app, like what you do in SQL Server Profiler. I have found stored procedures (sys.sp_trace_create etc...) that dont seem to work for my SQL management studio. I was wondering if anyone could help with the coding, or where i would start to do this?!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我家小可爱 2024-07-15 17:35:36

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

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

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

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

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

Are you wanting this to be real-time, just like the Profiler itself? That'd be tough to do. You'd basically be re-creating the profiler.

If that is not a requirement, I would recommend simply calling the sp_trace_create stored procs that you found to start a server-side trace, then use your application to open up the files that this trace produces.

The EASIEST way to learn how this works is to run the SQL Profiler itself, set all the options you want, then click Run, and immediately click Stop. Then go to File, Export, Script Trace Definition, and choose the appropriate version.

This should give you a TSQL script that puts all the correct pieces together, including all the trace events, columns, etc.

More technical history of the profiler: This old SQLMag article has some history of the Profiler, which replaced an app called "SQL Trace" when SQL 7.0 was introduced.

灯下孤影 2024-07-15 17:35:36

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

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();        
}

If you are still interested, found this code

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();        
}
明媚如初 2024-07-15 17:35:36

如果您使用 LINQ to SQL,则它生成的所有 SQL 命令都可以发送到输出窗口(或者根据需要记录到文件)。 请参阅此处:http://www.u2u.info /Blogs/Kris/Lists/Posts/Post.aspx?ID=11

If you're using LINQ to SQL then all of the SQL commands it generates can be sent to the output window (or logged to a file if you want). See here : http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文