我希望从我的C#应用程序创建一个数据库服务器上的跟踪,就像在SQL Server Profiler中所做的那样。我已经找到了存储过程(例如sys.sp_trace_create等),但似乎对我的SQL管理工具无效。我想知道是否有人能够帮助编写代码,或者我应该从哪里开始?!
我希望从我的C#应用程序创建一个数据库服务器上的跟踪,就像在SQL Server Profiler中所做的那样。我已经找到了存储过程(例如sys.sp_trace_create等),但似乎对我的SQL管理工具无效。我想知道是否有人能够帮助编写代码,或者我应该从哪里开始?!
你是否希望这是实时的,就像Profiler本身一样?那将会很困难。你基本上要重新创建Profiler。
如果这不是必须的,我建议只需调用sp_trace_create存储过程来启动一个服务器端跟踪,然后使用应用程序打开该跟踪生成的文件即可。
了解此操作最简单的方法是运行SQL Profiler,设置所有所需选项,然后点击Run,立即点击Stop。然后转到File,Export,Script Trace Definition,并选择适当的版本。
这将为您提供一个TSQL脚本,将所有正确的部分组合在一起,包括所有跟踪事件、列等。
有关Profiler的更多技术历史:这篇旧的SQLMag文章介绍了Profiler的一些历史,它取代了一个名为“SQL Trace”的应用程序,该应用程序在引入SQL 7.0时被替换。
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();
}