Sql server 事件探查器

Sql server 事件探查器,sql-server,sql-server-profiler,Sql Server,Sql Server Profiler,我被告知SQL Profiler在运行MSDB时会对其进行更改。这是真的吗?如果是,会有什么变化 更多信息 我问这个问题的原因是,我们有一个DBA,他希望我们在实时服务器上运行探查器时确定更改请求的范围。她的论点是,它对DB进行了更改,而DB应该进行更改控制。据我所知,情况并非如此(其他人注意到的细微更改除外) 你指的是什么变化?据我所知,情况并非如此(其他人注意到的微不足道的变化除外) 您指的是什么更改?我所知道的唯一更改发生在您计划跟踪以收集定期信息时-添加了作业。我所知道的唯一更改发生在您

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

更多信息


我问这个问题的原因是,我们有一个DBA,他希望我们在实时服务器上运行探查器时确定更改请求的范围。她的论点是,它对DB进行了更改,而DB应该进行更改控制。

据我所知,情况并非如此(其他人注意到的细微更改除外)


你指的是什么变化?

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


您指的是什么更改?

我所知道的唯一更改发生在您计划跟踪以收集定期信息时-添加了作业。

我所知道的唯一更改发生在您计划跟踪以收集定期信息时-添加了作业。

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


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

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


这听起来像是一种“城市传奇”。我建议您对此提出质疑——让声称其为真的人提供证据。

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


现在,在你去对你的dba微笑之前,她实际上是对的。探查器跟踪可能对实时系统造成重大压力,因为跟踪的事件必须阻塞,直到它们能够生成跟踪记录。处于活动、忙碌状态的系统可能会遇到阻塞
SQLTRACE\u BUFFER\u FLUSH
SQLTRACE\u LOCK
TRACEWRITE
和其他类型的资源。实时跟踪(探查器)通常更差,文件跟踪(sp_trace_create)更好,但仍然可能导致问题。因此,启动新的跟踪应该明确地告诉DBa一些事情,DBa应该非常仔细地考虑这些事情。

启动跟踪会在其中添加一行,停止跟踪会删除该行。但是
msdb.sys.traces
是内部表值函数的视图,不受任何物理存储的支持。要证明这一点,请将
msdb
设置为
read\u
,开始跟踪,观察
msdb.sys.traces
中的新行,停止跟踪,记住将
msdb
返回
read\u write
。由于当
msdb
为只读时,可以在探查器事件中启动跟踪,因此很明显,通常不会发生对msdb的写入


现在,在你去对你的dba微笑之前,她实际上是对的。探查器跟踪可能对实时系统造成重大压力,因为跟踪的事件必须阻塞,直到它们能够生成跟踪记录。处于活动、忙碌状态的系统可能会遇到阻塞
SQLTRACE\u BUFFER\u FLUSH
SQLTRACE\u LOCK
TRACEWRITE
和其他类型的资源。实时跟踪(探查器)通常更差,文件跟踪(sp_trace_create)更好,但仍然可能导致问题。因此,启动新的跟踪应该是DBa应该了解并仔细考虑的事情。

它可能只是在syscollections*表等中将自己注册为一个正在运行的跟踪。您为什么关心SQL Profiler在内部做什么?这是一个经过尝试和测试的工具,如果它有不必要的副作用,我相信有人会大声尖叫,直到它被修复…它可能只是将自己注册为一个运行跟踪,在syscollections*表中,等等。为什么您担心SQL Profiler在内部做什么?这是一个经过尝试和测试的工具,如果它有不必要的副作用,我肯定有人会大声尖叫,直到它被修复…你是说SQL代理的工作?跟踪不需要SQL代理作业才能运行。@Philip Kelly:我没有说作业是自动创建的。我说过,当您计划跟踪时,将创建一个作业。您是指特定的SQL代理作业,还是后台作业/任务?作为常规工作的一部分,我的DBA计划探查器将运行。他为此创建了一个SQL Server作业。明白了——您的DBA创建了一个创建跟踪的作业。(我也这么做了。)这些评论清楚地表明了这一点,所以我将撤销我的否决票。你是说SQL代理工作?跟踪不需要SQL代理作业才能运行。@Philip Kelly:我没有说作业是自动创建的。我说过,当您计划跟踪时,将创建一个作业。您是指特定的SQL代理作业,还是后台作业/任务?作为常规工作的一部分,我的DBA计划探查器将运行。他为此创建了一个SQL Server作业。明白了——您的DBA创建了一个创建跟踪的作业。(我也这么做了。)这些评论清楚地表明了这一点,所以我将逆转我的否决票。