. 什么是跟踪标记

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)    如果要在生产环境使用,请尽可能多的测试,尤其是非文档记载的跟踪标记;

0. 跟踪标记 (Trace Flag) 简介的更多相关文章

  1. 4. 跟踪标记 (Trace Flag) 610 对索引组织表(IOT)最小化日志

    跟踪标记:610 功能: 用批量导入操作(Bulk Import Operations)加载数据时,对于索引组织表(即有聚集索引的表) 最小化日志: 上图为simple/bulk-logged恢复模式 ...

  2. 1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式

    跟踪标记:1117 功能: 默认,同一个文件组下的多个文件,如果某个文件没有可用空间,且设置了自动增长,则该文件自动增长,其他文件大小保持不变: 开启后,同一文件组下的多个文件,如果某个文件没有可用空 ...

  3. 5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响

    跟踪标记:834 功能: 在64位的windows环境下,为SQL Server开启这个跟踪标记,那么SQL Server 会使用大页(Large pages)为内存缓冲区(buffer pool)分 ...

  4. 3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息

    跟踪标记:1204/1222 功能及用途: 捕获SQL Server死锁信息,并自动存放到错误日志(ERRORLOG)中. 举例: USE tempdb GO CREATE TABLE t1(id i ...

  5. 2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果

    跟踪标记:3604 功能: 输出DBCC命令返回结果到查询窗口(通常是SSMS窗口),类似print命令的显示效果: 用途: 常用于获取DBCC IND, DBCC PAGE命令的输出结果,因为这2个 ...

  6. (5.2.2)配置服务器参数——dbcc跟踪标记(trace)

    关键字:跟踪标记,跟踪 [1]常规dbcc命令 dbcc help('?') --查看dbcc 所有命令,常规下只有32个常用的dbcc TRACEON(2588) --指定了2588标记的话,你就可 ...

  7. SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  8. 【转】SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

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

    跟踪标记是什么? 对于DBA来说,掌握Trace Flag是一个成为SQL Server高手的必要条件之一,在大多数情况下,Trace Flag只是一个剑走偏锋的奇招,不必要,但在很多情况下,会使用这 ...

随机推荐

  1. notepad++上搭建gtk+2.0/3.x开发环境

    前言 老师布置了一道题需要用到图形界面,于是开始找图形库.最后选择了gtk+图形库,然后折腾了大概一天. 这里记录自己新学到的知识,同时也给后来者一些便利. 准备 下载以下内容 notepad++(由 ...

  2. css !important的作用

    css !important的作用是提高指定CSS样式规则的应用优先权. 注意:这个不是万能的,在神奇的IE6下仍然有问题,请参见:http://www.w3chtml.com/css3/rules/ ...

  3. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...

  4. 基于线程实现的生产者消费者模型(Object.wait(),Object.notify()方法)

    需求背景 利用线程来模拟生产者和消费者模型 系统建模 这个系统涉及到三个角色,生产者,消费者,任务队列,三个角色之间的关系非常简单,生产者和消费者拥有一个任务队列的引用,生产者负责往队列中放置对象(i ...

  5. Percona-mysql server 5.5升级5.6

    http://blog.csdn.net/lqx0405/article/details/50162557   系统环境:      操作系统:CentOS_6.5(64)            My ...

  6. Jsp&Servlet入门级项目全程实录第2讲

    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.导入jquery-easyui-1.3.3包( http://www.jeasyui.com/) 2.在页面导入e ...

  7. Winfrom 基于TCP的Socket服务端 多线程(进阶版)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. TortoiseGit用户手册

    3 配置TortoiseGit 3.1 生成公钥 生成SSH安全密钥,提供给GIT版本库管理员以访问Git 版本库,点击桌面上生成的图标 然后执行执行“ssh-keygen”生成自己的公钥: 一路回车 ...

  9. vue+element ui 的tab 动态增减,切换时提示用户是否切换

    前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui  有一个 bug,这里记录一下如何实现.转载 ...

  10. C# 设计模式·行为型模式

    这里列举行为型模式·到此23种就列完了···这里是看着菜鸟教程来实现··,他里边列了25种,其中过滤器模式和空对象模式应该不属于所谓的23种模式责任链模式:为请求创建一个接收者对象的链,对请求的发送者 ...