1

有人告诉我,SQL Profiler 在运行时会对 MSDB 进行更改。这是真的吗?如果是这样,它会做出什么改变?

更多信息

我问的原因是,当我们在实时服务器上运行分析器时,我们有一个 DBA 希望我们对更改请求进行范围。她的论点是它对数据库的更改应该受到更改控制。

4

4 回答 4

3

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

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

于 2009-10-01T16:56:43.310 回答
1

我所知道的唯一情况是您安排跟踪以收集定期信息时 - 添加了一项工作。

于 2009-10-01T15:08:49.043 回答
0

我从未读过、听到或看到过 SQL Profiler 或它所做或使用的任何东西对 MSDB 数据库有任何影响。(SQL Profiler 本质上是一个围绕跟踪例程的 GUI。)当然可以配置一个特定的设置/实现来做任何事情,也许这就是某人的想法。

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

于 2009-10-01T15:54:37.110 回答
0

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

你指的是什么变化?

于 2009-10-01T15:02:22.303 回答