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