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