. 什么是跟踪标记

SQL Server 跟踪标记(Trace Flag),像是一个开关,可用来自定义SQL Server的某种行为或特性,在性能诊断,系统调试等方面较为常用。比如:开启1204或1222跟踪标记,可在errorlog里记录死锁信息的明细。

跟踪标记有会话级和实例级两种。

. 如何开启跟踪标记

1. SQL Server 服务启动时开启

SQL Server服务从类似如下路径启动程序:

C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQL2016\MSSQL\Binn\sqlservr.exe

而sqlservr.exe接受一些启动参数,其中就包含了跟踪标记。

以命名实例MSSQL2016,跟踪标记610 为例:

1.1 使用sqlservr.exe来启动

(1) 先停掉服务 (以管理员身份运行cmd命令窗口)

默认实例:net stop MSSQLSERVER / net stop "SQL Server (MSSQLSERVER)"

命名实例:net stop MSSQL$MSSQL2016 / net stop "SQL Server (MSSQL2016)"

(2) 启动服务 (先cd切换到sqlservr.exe目录)

默认实例:sqlservr.exe –T610

命名实例:sqlservr.exe -sMSSQL2016 –T610

命令行举例:

C:\Windows\system32>net stop MSSQL$MSSQL2016
The SQL Server (MSSQL2016) service is stopping.
The SQL Server (MSSQL2016) service was stopped successfully. C:\Windows\system32>cd C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQL2016\MSSQL\Binn\
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQL2016\MSSQL\Binn>sqlservr -sMSSQL2016 -T610

在数据库里执行SQL语句,可看到已启动的跟踪标记:

dbcc tracestatus(-1)
--TraceFlag Status Global Session
--610 1 1 0

注:

(1) 以这种方式启动的SQL Server,服务状态仍然是停止,但是SSMS/SQLCMD均可以连接并执行SQL语句,通常用于系统故障诊断/维护时,不作为常规启动方式使用;

(2) 关闭当前的cmd窗口,即可关闭该次启动;

1.2使用net命令来启动

(1) 先停掉服务 (以管理员身份运行cmd命令窗口)

默认实例:net stop MSSQLSERVER 或 net stop "SQL Server (MSSQLSERVER)"

命名实例:net stop MSSQL$MSSQL2016或 net stop "SQL Server (MSSQL2016)"

(2) 启动服务(以管理员身份运行cmd命令窗口)

默认实例:net start MSSQLSERVER /T610 或net start "SQL Server (MSSQLSERVER)" /T610

命名实例:net start MSSQL$MSSQL2016 /T610 或net start "SQL Server (MSSQL2016)" /T610

命令行举例:

C:\Windows\system32>net stop MSSQL$MSSQL2016
The SQL Server (MSSQL2016) service is stopping.
The SQL Server (MSSQL2016) service was stopped successfully. C:\Windows\system32>net start MSSQL$MSSQL2016 /T610
The SQL Server (MSSQL2016) service is starting.
The SQL Server (MSSQL2016) service was started successfully.

在数据库里执行SQL语句,可看到已启动的跟踪标记:

dbcc tracestatus(-1)
--TraceFlag Status Global Session
--610 1 1 0

注:

(1) 以net命令启动SQL Server服务时,exe程序的参数通过斜线(/)来传递而不是横线(-):/T610;

1.3 使用配置管理器 (Configuration Manager) 来启动

打开SQL Server 配置管理器\SQL Server 服务\选择相应实例:

(1) 停止相应实例的服务

(2) 属性\启动参数, 输入-T610 并添加

(3) 启动相应实例的服务

在数据库里执行SQL语句,可看到已启动的跟踪标记:

dbcc tracestatus(-1)
--TraceFlag Status Global Session
--610 1 1 0

注:

(1) 启动参数被保存在注册表里,在服务启动时加载,所以会一直有效,直到在启动参数中删除该项并保存;

(2) 在配置管理器中修改SQL Server服务相关的参数为最佳实践(Best Practice),推荐;

2. SQL Server 服务启动后开启

在SQL Server服务启动后,可通过DBCC命令来开/关跟踪标记

--开启会话级跟踪标记
dbcc traceon(610)
--会话级跟踪标记,只能在所在会话关闭
dbcc traceoff(610) --开启实例级跟踪标记
dbcc traceon(610,-1)
--实例级跟踪标记,在所有会话都可关闭
dbcc traceoff(610,-1) --指定-1,显示所有已开启跟踪标记
dbcc tracestatus(-1)

注:

(1) 会话级跟踪标记,只对当前会话有效,其他会话不受影响;

(2) 实例级跟踪标记,整个实例有效;

小结:

(1)    以上几种方式,只有在SQL Server配置管理器里修改启动参数添加跟踪标记,会被保存到注册表,从而每次启动服务时跟踪标记都可以生效,其他几种方式只是在当前的命令行里开启了跟踪标记选项,正常重启服务后,跟踪标记就不见了;

(2)    只有DBCC traceon 可开启会话级跟踪标记,其他开启方式均为实例级;

(3)    如果要在生产环境使用,请尽可能多的测试,尤其是非文档记载的跟踪标记;

最新文章

  1. C# 本质论 第三章 操作符和控制流
  2. [百度空间] ld: add library file reference by path & file name
  3. 【HDOJ】3560 Graph’s Cycle Component
  4. Clone Graph 解答
  5. SIF与CIF
  6. TCP/IP协议族(二) HTTP报文头解析
  7. ●SPOJ 1811 Longest Common Substring
  8. Jenkins 2.x版本修改启动端口号
  9. 从APP跳转到微信指定联系人聊天页面功能的实现与采坑之旅
  10. Python PE8 编程规范
  11. sessionStorage:写入记事本功能[内容写入sessionStorage中,读取,删除]
  12. 自动化测试基础篇--Selenium中JS处理浏览器弹窗
  13. OpenSips使用说明
  14. robotframework 运行集合
  15. Android 状态栏开发
  16. 【poj2187】最远点对(勉强凑数)
  17. 网络电台-SHOUTcast
  18. (原)未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值与DATEADD
  19. C#笔试面试宝典值得收藏1
  20. 机器学习 Generative Learning Algorithm (A)

热门文章

  1. docker网络之macvlan
  2. pycharm的python console报错CE.app/Contents/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 87, in init self.matchers.remove(self.python_matches) ValueError: list.remove(x): x not in list
  3. WPF样式动画Trigger.EnterActions和Trigger.ExitActions(ExitActions其实可以不做任何事情)
  4. [转] 如何选择正确的Hadoop版本
  5. sql中根据逗号分隔,查出多行数据
  6. C学习笔记(1)-结构体、预处理与多文件结构程序设计
  7. [日常] Go语言圣经-GIF动画练习语法
  8. 《码出高效 Java开发手册》第三章 代码风格
  9. 撩课-Web大前端每天5道面试题-Day22
  10. python学习之老男孩python全栈第九期_day016作业