DBA应该知道的一些SQL Server跟踪标记

跟踪标记是什么?数据库

  对于DBA来讲,掌握Trace Flag是一个成为SQL Server高手的必要条件之一,在大多数状况下,Trace Flag只是一个剑走偏锋的奇招,没必要要,但在不少状况下,会使用这些标记可让你更好的控制SQL Server的行为。服务器

  下面是官方对于Trace Flag的标记:测试

  跟踪标记是一个标记,用于启用或禁用SQL Server的某些行为。优化

  由上面的定义不难看出,Trace Flag是一种用来控制SQL Server的行为的方式。不少DBA对Trace Flag都存在一些误区,认为只有在测试和开发环境中才有可能用到Trace Flag,这种想法只能说部分正确,所以对于Trace Flag能够分为两类,适合在生产环境中使用的和不适合在生产环境中使用的。日志

  Important:Trace Flag属于剑走偏锋的招数,在使用Trace Flag作优化以前,先Apply基本的Best Practice。开发

  如何控制跟踪标记io

  控制跟踪标记的方式有如下三种:基础

  一、经过DBCC命令配置

  能够经过DBCC命令来启用或关闭跟踪标记,这种方式的好处是简单易用,分别使用下面三个命令来启用,禁用已经查看跟踪标记的状态:方法

  ● DBCC TRACEON(2203,-1)

  ● DBCC TRACEOFF(2203,1)

  ● DBCC TRACESTATUS

  其中,TRACEON和TRACEOFF第二个参数表明启用标志的范围,1是Session Scope,-1是Global Scope,若是不指定该值,则保持默认值Session Scope。

  另外,值得说的是,若是你但愿在每次SQL Server服务启动时经过DBCC命令控制某些Flag,则使用

EXEC sp_procoption @ProcName = '<procedure name>'
    , @OptionName = ] 'startup'
    , @OptionValue = 'on';

  这个存储过程来指定,sp_procoption存储过程会在SQL Server服务器启动时自动执行。

  还有一点值得注意的是,不是全部的跟踪标记均可以用DBCC命令启动,好比Flag 835就只能经过启动参数指定。

  二、经过在SQL Server配置管理器中指定

  这种方式是经过在数据库引擎启动项里加启动参数设置,只有Global Scope。格式为-T#跟踪标记1;T跟踪标记2;T跟踪标记3。

  三、经过注册表启动

  这种方式和方法2大同小异,就很少说了。

  一些在生产环境中可能须要的跟踪标记

  Trace Flag 610

  减小日志产生量。若是你对于日志用了不少基础的best practice,好比说只有一个日志文件、VLF数量适当、单独存储,若是仍是不能缓解日志过大的话,考虑使用该跟踪标记。

相关文章
相关标签/搜索