SQL Server Profiler

时间:2009-10-01 15:00:01

标签: sql-server sqlprofiler

我被告知SQL Profiler在运行时会对MSDB进行更改。这是真的,如果是这样的话会有什么变化?

更多信息

我问的原因是我们有一位DBA希望我们在实时服务器上运行探查器时对变更请求进行排序。她的论点是,它改变了应该改变控制的DB。

4 个答案:

答案 0 :(得分:3)

启动跟踪会在msdb.sys.traces中添加一行,停止跟踪会删除该行。但是msdb.sys.traces是内部表值函数的视图,不受任何物理存储的支持。要证明这一点,请将msdb设置为read_only,开始跟踪,观察msdb.sys.traces中的新行,停止跟踪,记得转回msdb read_write 。由于在msdb只读时可以在Profiler 事件中启动跟踪,因此很明显通常没有写入msdb可能发生的事件。

在你向你的dba咧嘴笑之前,她实际上是对的。 Profiler跟踪可能会对实时系统造成很大压力,因为跟踪事件必须阻塞,直到它们可以生成跟踪记录。实时,忙碌的系统可能会遇到类型SQLTRACE_BUFFER_FLUSHSQLTRACE_LOCKTRACEWRITE等资源的阻止。实时跟踪(分析器)通常更糟糕,文件跟踪(sp_trace_create)更好,但仍然可能导致问题。因此,开始新的痕迹应该是DBa应该被告知并且非常仔细考虑的事情。

答案 1 :(得分:1)

当您计划跟踪以收集定期信息时,我知道的唯一事件就会发生 - 添加了一项工作。

答案 2 :(得分:0)

据我所知,情况并非如此(除了其他人注意到的微不足道的变化)。

您指的是哪些变化?

答案 3 :(得分:0)

我从未读过,听过或看到的任何内容都说SQL Profiler或其执行或使用的任何内容都会对MSDB数据库产生任何影响。 (SQL Profiler本质上是一个围绕跟踪例程的GUI。)当然可以配置一个特定的设置/实现来完成任务,也许这就是某人的想法。

这听起来像是一种“都市传奇”。我建议你挑战它 - 让声称它是真实的人提供证据。