25

We need to use SQL Server Trace Flag 7646 to help mitigate some full text blocking, but I was dismayed to find that the trace flag "unset" itself, probably when the database server was rebooted.

I've used

DBCC TRACEON (7646, -1)

to set the trace flag and

DBCC TRACESTATUS

to show all trace flags, which told me that it wasn't set (after reboot, I guess). To set the trace flag permanently, I did this:

  • went to SQL Server Configuration Manager
  • viewed properties for SQL Server service
  • visited the Advanced tab
  • edited the Startup Parameters option

and added

;-T{tracenumber}

to the end, like so...

-dD:\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;-eD:\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lD:\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf;-T7646

Is that correct? I am finding conflicting results on the syntax for SQL Server Startup Parameters.

Jeff Atwood
  • 12,994
  • 20
  • 74
  • 92
  • FYI: There's an article here on how to set the startup parameters through T-SQL: http://www.sqlservercentral.com/articles/Automation/105511/ – JohnLBevan Nov 18 '16 at 11:55
  • ps. Per the above, the following SQL will give you the relevant registry paths & current values for your instance: `select * from sys.dm_server_registry where value_name like 'SQLArg%'` – JohnLBevan Nov 18 '16 at 12:02

2 Answers2

15

Yep, that'll about do it for you. Using the -T{traceflag} startup parameter, that is.

squillman
  • 37,618
  • 10
  • 90
  • 145
11

Something that I learned the hard way is that you have to have semicolons before each trace flag. For example, if you were enabling logging of deadlock info to file, your example would become...

-dD:\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;-
eD:\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-
lD:\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.l
df;-T7646;-T3605;-T1204;-T1222

Spaces between trace flags cause the later flags to be ignored.

GaTechThomas
  • 255
  • 2
  • 8