0

我需要编写一个可以从 C 代码中收集 SQL Server 跟踪日志的程序。似乎有几种方法可以做到这一点:

  1. 使用最常见的SQL 跟踪方法,其中跟踪文件通过存储过程映射到表。然后可以使用 SQL/ODBC 收集此跟踪日志。这样做的问题是跟踪文件被旋转并且大小受到限制。收集跟踪时,可能会交换跟踪文件,但并未收集所有事件。其次,这些存储过程将在未来的版本中删除,因此在此基础上进行构建似乎不是一个好主意。
  2. 推荐的方法是使用扩展事件。这支持 ETW 和文件目标,但服务器端的设置似乎更复杂,并且并非所有 SQL Server 版本似乎都支持这一点。
  3. 还有SMO,但这不提供 C API。

那么正确收集 SQL Server 跟踪日志的推荐方法是什么?

4

1 回答 1

-1

这似乎是一个流行的问题。学习 C# 并使用

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-10T04:04:28.910 回答