SQLServer跟踪标志trace flag合集
SQLServer跟踪标志trace flag合集
--以下示例以全局方式打开跟踪标记 3205 和 260。 DBCC TRACEON (1118 ,-1) GO DBCC TRACESTATUS (1118,-1) GO
SELECT * FROM [dbo].[CommandLog] OPTION ( QUERYTRACEON 3604, QUERYTRACEON 9204)
转载自:http://blog.sina.com.cn/s/blog_3eb222740100styi.html
260:打印有关扩展存储过程动态链接库 (DLL) 的版本控制信息。有关 __GetXpVersion() 的详细信息,请参阅创建扩展存储过程。
作用域:全局或会话
610:打开最小化日志,导入大批量数据的时候根据条件可以最小化日志ldf
http://www.cnblogs.com/seusoftware/p/7929573.html
1200:开启Trace Flag 1200捕捉执行时的锁.
http://www.cnblogs.com/shanksgao/p/4942928.html
1204:返回参与死锁的锁的资源和类型,以及受影响的当前命令。
作用域:仅全局
1211:于内存不足或基于锁数禁用锁升级。SQL Server 数据库引擎不会将行锁或页锁升级到表锁。
使用此跟踪标志可生成过多的锁数目。这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。有关详细信息,请参阅锁升级(数据库引擎)。
如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于在使用多个锁时避免“锁不足”错误。
作用域:全局或会话
1222:以不符合任何 XSD 架构的 XML 格式,返回参与死锁的锁的资源和类型,以及受影响的当前命令。
作用域:仅全局
1224:基于锁数禁用锁升级。但是,内存不足仍可激活锁升级。如果锁对象使用的内存量超出下列条件之一,数据库引擎会将行锁或页锁升级为表(或分区)锁:
数据库引擎所用内存的 40%,使用地址窗口化扩展插件 (AWE) 的内存分配除外。只有在 sp_configure 的 locks 参数设置为 0 时,这才适用。
使用 sp_configure 的 locks 参数配置的锁内存的 40%。有关详细信息,请参阅设置服务器配置选项。
如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。这有助于在使用多个锁时避免“锁不足”错误。
注意
也可以使用 ALTER TABLE 语句的 LOCK_ESCALATION 选项控制到表级或 HoBT 级粒度的锁升级。
作用域:全局或会话
2528:禁用 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 执行的对象并行检查。
默认情况下,并行度由查询处理器自动确定。最大并行度的配置就像并行查询的最大并行度一样。有关详细信息,请参阅 max degree of parallelism 选项。
通常应使并行 DBCC 保持启用状态。对于 DBCC CHECKDB,查询处理器重新求值,并对检查的每个表或每批表自动调整并行度。有时,检查可能在服务器几乎处于空闲状态时启动。如果管理员知道在检查完成前负载将增加,则可能需要手动减小并行度或禁用并行度。
禁用对 DBCC 的并行检查可能导致 DBCC 的完成时间变长,如果运行 DBCC 时启用了 TABLOCK 功能并关闭了并行度,则表可能被锁定更长时间。
作用域:全局或会话
2588:查看未公开DBCC命令的使用帮助
DBCC TRACEON(2588)
DBCC HELP('IND')
3205:默认情况下,如果磁带机支持硬件压缩,则 DUMP 或 BACKUP 语句会使用该功能。利用此跟踪标志,可以禁用磁带机的硬件压缩。此选项在您需要与不支持压缩的其他站点或磁带机交换磁带时很有用。
作用域:全局或会话
3226:默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。如果非常频繁地创建日志备份,这些成功消息会迅速累积,从而产生一个巨大的错误日志,使查找其他消息变得非常困难。
使用这一跟踪标志,可以取消这些日志条目。如果您频繁地运行日志备份,并且没有任何脚本依赖于这些条目,则这种做法非常有用。
3608:禁止 SQL Server 自动启动和恢复除 master 数据库之外的任何数据库。在访问数据库时将启动并恢复该数据库。可能无法运行某些功能,如快照隔离和读提交快照。用于移动系统数据库和移动用户数据库。请不要在正常操作中使用。
3625:限制错误消息中返回的信息量。有关详细信息,请参阅元数据可见性配置。
作用域:仅全局
4199:控制以前基于多个跟踪标志进行的多个查询优化器更改。有关详细信息,请参阅此 Microsoft 支持文章。
作用域:全局或会话
4616:使应用程序角色可以看到服务器级元数据。在 SQL Server 中,应用程序角色无法访问自身数据库以外的元数据,因为应用程序角色与服务器级主体不相关联。这是对早期版本的 SQL Server 的行为的更改。设置此全局标志将禁用新的限制,并允许应用程序角色访问服务器级元数据。
作用域:仅全局
6527:禁止在 CLR 集成中第一次发生内存不足异常时生成内存转储。默认情况下,SQL Server 在 CLR 中第一次发生内存不足异常时会生成小内存转储。该跟踪标志的行为如下所示:
如果用作一个启动跟踪标志,则永远不生成内存转储。但是,如果使用了其他跟踪标志,则可能会生成内存转储。
如果在正在运行的服务器上启用此跟踪标志,则从此时开始不会自动生成内存转储。但是,如果已经由于 CLR 中的内存不足异常生成了内存转储,则此跟踪标志将没有任何效果。
作用域:仅全局
7806:在 SQL Server Express 上启用专用管理员连接 (DAC)。默认情况下,在 SQL Server Express 上不保留 DAC 资源。有关详细信息,请参阅使用专用管理员连接。
作用域:仅全局
845:SQLSERVER标准版打开锁定内存页功能需要 使用845跟踪标志才能用这个功能,企业版不需要
http://www.sqlservergeeks.com/sql-server-trace-flag-845/
3604:DBCC PAGE的时候显示页面的信息
http://www.sqlservergeeks.com/sql-server-trace-flag-3604/
3605:将DBCC PAGE页面信息打印到errorlog里面
http://www.sqlservergeeks.com/sql-server-trace-flag-3605/
3502:将checkpoint打印在errorlog里面
http://www.sqlservergeeks.com/sql-server-trace-flag-3502/
3504:checkpoint的详细操作,包括吞吐量
http://www.sqlservergeeks.com/sql-server-trace-flag-3504/
3505:checkpoint的详细操作,包括吞吐量
http://www.sqlservergeeks.com/sql-server-trace-flag-3505/
3014:数据库备份的详细过程
http://www.sqlservergeeks.com/sql-server-trace-flag-3014/
3226:不把数据库备份信息记录在errorlog里面
http://www.sqlservergeeks.com/sql-server-trace-flag-3226/
3004:数据库还原详细信息记录在errorlog里面
http://www.sqlservergeeks.com/sql-server-trace-flag-3004/
1117:同一个文件组内的多个文件插入数据的时候会同时增长,而不是只增长第一个数据文件
http://www.sqlservergeeks.com/sql-server-trace-flag-1117/
1118:把表开头的8个页面在统一区里分配,对于tempdb里说,可以减少SGAM争用
http://www.sqlservergeeks.com/sql-server-trace-flag-1118/
1204:跟踪死锁打印在errorlog里面
http://www.sqlservergeeks.com/category/one-trace-flag-a-day/page/4/
1222:跟踪死锁以XML格式打印在errorlog里面
http://www.sqlservergeeks.com/sql-server-deadlock-trace-flag-1222/
1224:阻止锁升级
http://www.sqlservergeeks.com/sql-server-trace-flag-1224/
2528:执行DBCC CHECKDB, DBCC CHECKFILEGROUP DBCC CHECKTABLE的时候禁用并行,不用并行DBCC命令会用更长时间
http://www.sqlservergeeks.com/sql-server-trace-flag-2528/
1211:阻止锁升级:锁内存过高和锁数目,优先级比1224高
http://www.sqlservergeeks.com/sql-server-trace-flag-1211/
1262:报告17883错误,获取更多nonyield的信息,产生mini dump,产生mini dump会增加I/O开销,SchedulerMonitor 的两个阶段
http://www.sqlservergeeks.com/sql-trace-flag-1262/
2340:对于排序运算符的高CPU消耗,微软给出了一个跟踪标志2340
http://www.sqlservergeeks.com/trace-flag-2340/
2301:迫使优化器选择最优的查询计划才去执行,但是会造成优化时间的增加
http://www.sqlservergeeks.com/sql-server-trace-flag-2301/
2537:使用fn_dblog读取log的时候可以读取inactive (非活动)部分事务日志,而不用2537的情况下也就是默认情况下只能读取active部分
http://www.sqlservergeeks.com/trace-flag-2537/
2544、2546、2551: SQLDumper.exe
Trace Flag 2544 – generates full memory dump
Trace Flag 2551 – generates filtered memory dump
Trace Flag 2546 – generates dump file for all threads of SQL Server (mini dump)
http://www.sqlservergeeks.com/trace-flag-2544/
652:关闭sqlserver的预读机制,Scan count 1, logical reads 20002, physical reads 2495,read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
http://www.sqlservergeeks.com/sql-server-trace-flag-652/
661:禁用系统的Ghost Removal Task 鬼影记录清除任务
在PFS页面里标记了页面有鬼影记录
http://www.sqlservergeeks.com/sql-server-trace-flag-661/
834:开启large page allocation,系统大于 8 GB RAM,SQL 版本 Enterprise,前提是Locked Pages in memory开启,页面大小从2 Mb 到 16 MB不等
http://www.sqlservergeeks.com/sql-server-trace-flag-834/
2371:SQL根据需要自动修改统计信息更新的阀值,而不按照默认算法
http://www.sqlservergeeks.com/sql-server-trace-flag-2371/
2388:1、输出某个统计信息的所有历史更新记录,包括更新时间2、显示insert,update还是delete而造成的统计信息更新 3、只能用在SQL2012和SQL2014
http://www.sqlservergeeks.com/sql-server-trace-flag-2388/
2389:自动计算预估数目,SQL Server 2014 new cardinality estimator.SQL2014已经有新基数预估器,所以不会出现预估错误的情况
前提条件
你的统计信息里的前导列必须在SQLSERVER里标记为Ascending 查询的时候必须用前导列作为过滤条件
覆盖索引必须存在并且升序列作为前导列
http://www.sqlservergeeks.com/sql-server-trace-flag-2389/
2390:自动计算预估数目
前提条件
你的统计信息里的前导列必须在SQLSERVER里标记为Unknow 查询的时候必须用前导列作为过滤条件
http://www.sqlservergeeks.com/sql-server-trace-flag-2390/
9481:在SQL2014里面跟基数预估器有关的traceflag,使用旧的基数预估器(兼容级别90),即使兼容级别设置为120
http://www.sqlservergeeks.com/trace-flag-9481/
http://blogs.technet.com/b/dataplatforminsider/archive/2014/03/17/the-new-and-improved-cardinality-estimator-in-sql-server-2014.aspx
2312:在SQL2014里面跟基数预估器有关的traceflag
http://www.sqlservergeeks.com/trace-flag-2312/
8011:禁止收集服务器信息,全局级别,所有包括scheduler ,exceptions
ringbuffer能排查各种问题:外部内存压力,内部内存压力,schedulers 等
使用sys.dm_os_ring_buffers视图看到收集的信息,ring_buffer_type
RING_BUFFER_EXCEPTION
RING_BUFFER_SCHEDULER
RING_BUFFER_MEMORY_BROKER_CLERKS
RING_BUFFER_RESOURCE_MONITOR
http://www.sqlservergeeks.com/sql-server-ring-buffer-trace-flag-8011/
8012:禁止收集服务器的scheduler 相关信息 ,只能在SQL启动的时候使用此TF
<Frame>tags是什么?
通过sys.dm_os_ring_buffers DMV 可以访问一系列内部信息,它包含了但不仅限于Connectivity Ring Buffer。作为DMV基础的一部分,大多数的Ring Buffers 提供了事件发生时的栈踪迹(stack trace),每一个<frame>提供了一个十六进制的函数地址。这些都可以分解为函数名,并dump Sqlservr.exe进程,在WinDbg打开dump,并采用基于函数的地址的LM命令。
http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring-buffer-sql-server-2008.aspx
scheduler 切换上下文 到其他的worker
worker挂起
worker重启
worker进入抢占模式或非抢占模式
SELECT * FROM SYS.[dm_os_ring_buffers]
http://www.sqlservergeeks.com/sql-server-ring-buffer-trace-flag-8012/
8018:禁止收集最后的 256 exceptions 异常,SQL启动的时候才能指定
http://www.sqlservergeeks.com/sql-server-ring-buffer-trace-flag-8018/
8019:禁止收集最后的 256 exceptions 异常,SQL启动的时候才能指定,8018启动了的不影响8019
http://www.sqlservergeeks.com/sql-server-ring-buffer-trace-flag-8019/
4013:在errorlog里打印出 登录信息 Login: sa WIN-XXXXXX server process ID (SPID): xx, kernel process ID (KPID): xx.
http://www.sqlservergeeks.com/sql-server-trace-flag-4013/
4030:将客户端发过来的内容打印在errorlog里面,跟DBCC INPUTBUFFER()是一样的,包括字节和ASCII, 必须也要打开3605TF,需要在启动sql服务的时候添加这个参数
可以代替network monitor的一部分
http://www.sqlservergeeks.com/sql-server-trace-flag-4030/
4031:将客户端发过来的内容打印在errorlog里面,跟DBCC OUTPUTBUFFER()是一样的
http://www.sqlservergeeks.com/sql-server-trace-flag-4031/
4032:跟踪所有从客户端发过来服务器的命令,打印在errorlog里面
http://www.sqlservergeeks.com/sql-server-trace-flag-4032/
4136:使用公式:vector * number of rows 来赋值给预估行数,而不是靠直方图
http://www.sqlservergeeks.com/sql-server-trace-flag-4136/
7806:打开SQL express版的DAC功能,需要重启SQL
http://www.sqlservergeeks.com/sql-server-trace-flag-7806/
3123:查看备份和还原时 buffercount和transfersize大小
http://www.sqlservergeeks.com/sql-server-trace-flag-3213/
3608: 在配置管理器的启动项里添加这个TF,然后在启动的时候只启动系统数据库,其他用户库只有在访问的时候才启动
快照隔离级别和已提交读隔离级别不会工作
http://www.sqlservergeeks.com/sql-server-trace-flag-3608/
8602: 忽略所有的索引提示 with (index(IX_TEST_COLA))
http://www.sqlservergeeks.com/sql-server-trace-flag-8602/
9292: 打印出从元数据中得到的统计信息的头信息
http://www.sqlservergeeks.com/sql-server-trace-flag-9292/
--http://blogs.msdn.com/b/apgcdsd/archive/2012/11/28/10372470.aspx
9204:打印出被加载的统计信息
http://www.sqlservergeeks.com/sql-server-trace-flag-9204/
8721:当sql内部的AutoStat 运行的时候打印运行信息到errorlog
http://www.sqlservergeeks.com/sql-server-trace-flag-8721/
3536:解释内部堆栈
http://www.sqlskills.com/blogs/jonathan/an-xevent-a-day-24-of-31-what-is-the-callstack/
--Trace flag 3656 enables the call stacks to be resolved. This requires that the
--sqlservr.pdb file reside in the same directory as sqlservr.exe
DBCC TRACEON (3656, -1) GO
SELECT n.query('.') AS callstack
FROM
(
SELECT CAST(target_data as xml)
FROM sys.dm_xe_sessions AS s
INNER JOIN sys.dm_xe_session_targets AS t
ON s.address = t.event_session_address
WHERE s.name = 'system_health'
AND t.target_name = 'ring_buffer'
) AS src (target_data)
CROSS APPLY target_data.nodes('RingBufferTarget/event/action[@name="callstack"]') as q(n)
The output of our callstack action is now:
<action name="callstack" package="package0">
<type name="callstack" package="package0" />
<value>GenericEvent::CallNextAction+45 [ @ 0+0x0
_chkstk+f276c [ @ 0+0x0
ErrorReportedAutoPublish::Publish+190 [ @ 0+0x0
_chkstk+1bd96d [ @ 0+0x0
CXStmtError::XretExecute+6ae [ @ 0+0x0
CMsqlExecContext::ExecuteStmts<1,1>+55a [ @ 0+0x0
CMsqlExecContext::FExecute+58b [ @ 0+0x0
CSQLSource::Execute+319 [ @ 0+0x0
process_request+370 [ @ 0+0x0
process_commands+2b2 [ @ 0+0x0
SOS_Task::Param::Execute+11b [ @ 0+0x0
SOS_Scheduler::RunTask+ca [ @ 0+0x0
SOS_Scheduler::ProcessTasks+95 [ @ 0+0x0
SchedulerManager::WorkerEntryPoint+110 [ @ 0+0x0
SystemThread::RunWorker+60 [ @ 0+0x0
SystemThreadDispatcher::ProcessWorker+12c [ @ 0+0x0</value>
<text />
</action>
8649:针对特定的语句采用Trace flag(8649)对特定语句调整其实是最具针对性的强制启用并行计划
http://www.cnblogs.com/shanksgao/p/4120992.html
9130:强制添加filter运算符 内存授予不正常的问题
http://www.cnblogs.com/shanksgao/p/4171265.html
272:禁用自增列的跳过现象,适用于sql2012和sql2014
https://social.technet.microsoft.com/Forums/zh-CN/65ff4cb5-0a33-4d6b-b332-2ac9a728dcac/sql?forum=sqlserverzhchs
3917:捕捉数据库中eager writer的情况
http://www.cnblogs.com/shanksgao/p/3949251.html
1448:捕捉数据库中eager writer的情况
启用TF1448:事务复制和镜像共用时,改变LogReader的读取限,当镜像故障时仍然可以从Principle读取日志。
http://joetang.blog.51cto.com/2296191/1610270
8002:在设置了CPU关联掩码的情况下控制CPU的亲和性
4核cpu的机器上,如果只启用了2个cpu,也就是只设置了2个处理器关联掩码的情况不让query只在某个cpu上跑,让两个scheduler都可以充分利用这两个cpu
如果没有设置cpu掩码,也就是保持默认情况,这个跟踪不会用到
https://www.sqlpassion.at/archive/2017/10/02/setting-a-processor-affinity-in-sql-server-the-unwanted-side-effects/?awt_l=BJCrA&awt_m=3XJudllqV6YUUTS
在errorlog里查看sqlserver是否启用了执行卷维护任务(Performance Volume Maintenance Task)特权
-T3004
-T3605
http://www.cnblogs.com/woodytu/p/4639282.html
在服务器启动时候,我们可以使用2个trace flag进行调度算法的指定
-T8008 - 使用2012企业版之前的调度算法,也就是我在第一篇中写到的算法
-T8016 - 强制指派任务到首选scheduler上(基本上等于不进行什么算法判断了)
http://www.cnblogs.com/liwei225/p/4624183.html
msdn上的跟踪标志合集
https://msdn.microsoft.com/zh-cn/library/ms188396.aspx
跟踪 标志 |
说明 | ||
---|---|---|---|
260 |
打印有关扩展存储过程动态链接库 (DLL) 的版本控制信息。 有关 __GetXpVersion() 的详细信息,请参阅创建扩展存储过程。 作用域:全局或会话 |
||
634 |
禁用背景列存储压缩任务。 SQL Server 定期运行一个背景任务,对含有未压缩数据的列存储索引行组进行压缩,每次压缩一个这种行组。 列存储压缩可提高查询性能,但也会占用系统资源。 通过用跟踪标志 634 禁用背景压缩任务可以手动控制列存储压缩的计时,之后可以随时显式调用 ALTER INDEX REORGANIZE 或 ALTER INDEX REBUILD。 作用域:仅全局 |
||
1204 |
返回参与死锁的锁的资源和类型,以及受影响的当前命令。 作用域:仅全局 |
||
1211 |
基于内存不足或基于锁数禁用锁升级。 SQL Server 数据库引擎不会将行锁或页锁升级到表锁。 使用此跟踪标志可生成过多的锁数目。 这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。 如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。 但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。 这有助于在使用多个锁时避免“锁不足”错误。 作用域:全局或会话 |
||
1222 |
以不符合任何 XSD 架构的 XML 格式,返回参与死锁的锁的资源和类型,以及受影响的当前命令。 作用域:仅全局 |
||
1224 |
基于锁数禁用锁升级。 但是,内存不足仍可激活锁升级。 如果锁对象使用的内存量超出下列条件之一,数据库引擎会将行锁或页锁升级为表(或分区)锁:
如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。 但是,由于在所有情况下(甚至在内存紧张的情况下)跟踪标志 1211 都禁止升级,因此建议使用 1224。 这有助于在使用多个锁时避免“锁不足”错误。
作用域:全局或会话 |
||
1448 |
甚至在异步辅助数据库不确认接受更改的情况下,也使复制日志读取器前移。 甚至在此跟踪标志启用的情况下,日志读取器也始终等待同步辅助数据库。 日志读取器将不会超过同步辅助数据库的最小确认。 此跟踪标志应用于 SQL Server 的实例,而不仅是可用性组、可用性数据库或日志读取器实例。 应用会立即生效,无需重新启动。 此跟踪标志可提前激活或在同步辅助数据库失败时激活。 |
||
2528 |
禁用 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 执行的对象并行检查。 默认情况下,并行度由查询处理器自动确定。 最大并行度的配置就像并行查询的最大并行度一样。 有关详细信息,请参阅配置 max degree of parallelism 服务器配置选项。 通常应使并行 DBCC 保持启用状态。 对于 DBCC CHECKDB,查询处理器重新求值,并对检查的每个表或每批表自动调整并行度。 有时,检查可能在服务器几乎处于空闲状态时启动。 如果管理员知道在检查完成前负载将增加,则可能需要手动减小并行度或禁用并行度。 禁用对 DBCC 的并行检查可能导致 DBCC 的完成时间变长,如果运行 DBCC 时启用了 TABLOCK 功能并关闭了并行度,则表可能被锁定更长时间。 作用域:全局或会话 |
||
3042 |
绕过默认的备份压缩预先分配算法,以便允许备份文件仅根据需要增长以达到其最终大小。 如果您需要仅分配压缩的备份所需的实际大小以便节约空间,则此跟踪标志将很有用。使用此跟踪标志可能会导致轻微的性能损失(在备份操作期间损失可能会增加)。 有关预先分配算法的详细信息,请参阅备份压缩 (SQL Server)。 |
||
3205 |
默认情况下,如果磁带机支持硬件压缩,则 DUMP 或 BACKUP 语句会使用该功能。 利用此跟踪标志,可以禁用磁带机的硬件压缩。 此选项在您需要与不支持压缩的其他站点或磁带机交换磁带时很有用。 作用域:全局或会话 |
||
3226 |
默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。 如果非常频繁地创建日志备份,这些成功消息会迅速累积,从而产生一个巨大的错误日志,使查找其他消息变得非常困难。 使用这一跟踪标志,可以取消这些日志条目。 如果您频繁地运行日志备份,并且没有任何脚本依赖于这些条目,则这种做法非常有用。 |
||
3608 |
禁止 SQL Server 自动启动和恢复除 master 数据库之外的任何数据库。在访问数据库时将启动并恢复该数据库。 可能无法运行某些功能,如快照隔离和读提交快照。 用于移动系统数据库和移动用户数据库。 请不要在正常操作中使用。 |
||
3625 |
通过使用“******”屏蔽某些错误消息的参数,限制返回给不是 sysadmin 固定服务器角色成员的用户的信息量。 这可以帮助阻止披露敏感信息。 作用域:仅全局 |
||
4199 |
控制是否以前根据多个跟踪标志进行了多个查询优化器更改。 有关详细信息,请参阅此 Microsoft 支持文章。 作用域:全局或会话 |
||
4616 |
使应用程序角色可以看到服务器级元数据。 在 SQL Server 中,应用程序角色无法访问自身数据库以外的元数据,因为应用程序角色与服务器级别主体不相关联。 这是对早期版本的 SQL Server 的行为的更改。 设置此全局标志将禁用新的限制,并允许应用程序角色访问服务器级元数据。 作用域:仅全局 |
||
6527 |
禁止在 CLR 集成中第一次发生内存不足异常时生成内存转储。 默认情况下,SQL Server 在 CLR 中第一次发生内存不足异常时会生成小内存转储。 该跟踪标志的行为如下所示:
作用域:仅全局 |
||
7806 |
在 SQL Server Express 上启用专用管理员连接 (DAC)。 默认情况下,在 SQL Server Express 上不保留 DAC 资源。 有关详细信息,请参阅用于数据库管理员的诊断连接。 作用域:仅全局 |
||
8032 |
将缓存限制参数还原为 SQL Server 2005RTM 设置,此设置通常允许更大的缓存。 当频繁重复使用的缓存条目不适合缓存时,以及当使用“针对即席工作负荷进行优化”服务器配置选项未能解决与计划缓存相关的问题时,请使用此设置。
|
||
8207 |
允许事务复制的单独更新。 对订阅服务器的更新可以作为 DELETE 和 INSERT 对复制。 这可能不满足业务规则的要求,如激发 UPDATE 触发器。 使用跟踪标志 8207 时,对只影响一行的唯一列的更新(单独更新)将作为 UPDATE 而非作为 DELETE 或 INSERT 对复制。 如果该更新影响具有唯一约束的列或影响多个行,则仍将该更新作为 DELETE 或INSERT 对复制。 |
||
9485 |
对 DBCC SHOW_STATISTICS 禁用 SELECT 权限。 |
2332 : Force DML Request Sort (CUpdUtil::FDemandRowsSortedForPerformance)
8633: Enable prefetch (CUpdUtil::FPrefetchAllowedForDML and CPhyOp_StreamUpdate::FDoNotPrefetch)
8744 : Disable prefetch (CUpdUtil::FPrefetchAllowedForDML)
8758 : Disable rewrite to a single operator plan (CPhyOp_StreamUpdate::PqteConvert)
8790 : Force a wide update plan (CUpdUtil::PexprBuildWideUpdatePlan)
8795 : Disable DML Request Sort (CUpdUtil::FDemandRowsSortedForPerformance)
9115 : Disable prefetch (CUpdUtil::FPrefetchAllowedForDML)
http://sqlblog.com/blogs/paul_white/archive/2013/01/26/optimizing-t-sql-queries-that-change-data.aspx
1117 允许在同一个文件组下的所有文件都一起自动增长autogrow,而不是只有单个文件增长,只能用在所有文件在同一个文件组下,每个文件组一个文件这种情况下无效
http://blogs.technet.com/technet_blog_images/b/sql_server_sizing_ha_and_performance_hints/archive/2012/02/09/sql-server-2008-trace-flag-t-1117.aspx
8690:禁用table spool
https://blogs.msdn.microsoft.com/psssql/2015/12/15/spool-operator-and-trace-flag-8690/?utm_source=twitterfeed&utm_medium=twitter
2335:分配太多内存给SQL 造成执行计划效率不高
https://support.microsoft.com/en-us/kb/2413549
4137:基数预估器对于where条件有关的and 条件导致执行计划效率低下
(column1 = constant1 or column1 = constant2 or …) and (column2 = constant3 or column2 = constant4 or …) and …
https://support.microsoft.com/en-us/kb/2658214
4138:优化器预估行数不对 IN ,EXISTS子查询
https://support.microsoft.com/en-us/kb/2667211
2453:SQL 2012 SP2和SQL Server CU3引入的,其作用于OPTION(RECOMPILE)类似,使得查询优化器在生成执行计划时对表变量有一个“准确”的预估行数,而不是简单粗暴地使用预估行数1
http://www.cnblogs.com/TeyGao/p/5612257.html#top