Festlegen von Ablaufverfolgungsflags in SQL Server "dauerhaft"?

25

Wir müssen das SQL Server-Ablaufverfolgungsflag 7646 verwenden , um das Blockieren von Volltext zu verringern, aber ich war bestürzt, als ich feststellte, dass das Ablaufverfolgungsflag selbst "nicht gesetzt" war, wahrscheinlich, als der Datenbankserver neu gestartet wurde.

Ich habe benutzt

DBCC TRACEON (7646, -1)

um das Trace Flag zu setzen und

DBCC TRACESTATUS

um alle Trace-Flags anzuzeigen, die mir sagten, dass sie nicht gesetzt waren (nach einem Neustart, denke ich). Um das Trace-Flag dauerhaft zu setzen, habe ich Folgendes getan:

  • ging zu SQL Server Configuration Manager
  • Eigenschaften für SQL Server-Dienst angezeigt
  • besuchte die Registerkarte Erweitert
  • hat die Option Startup Parameters bearbeitet

und fügte hinzu

; -T {tracenumber}

bis zum Ende, wie so ...

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

Ist das korrekt? Ich finde widersprüchliche Ergebnisse in der Syntax für SQL Server-Startparameter .

Jeff Atwood
quelle
Zu Ihrer
Information
ps. Gemäß den obigen select * from sys.dm_server_registry where value_name like 'SQLArg%'
Ausführungen

Antworten:

15

Ja, das wird es für dich tun. Verwenden des Startparameters -T {traceflag}.

Squillman
quelle
11

Etwas, was ich auf die harte Tour gelernt habe, ist, dass man vor jedem Trace-Flag ein Semikolon haben muss. Wenn Sie beispielsweise die Protokollierung von Deadlock-Informationen in einer Datei aktivieren, würde Ihr Beispiel folgendermaßen aussehen:

-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

Leerzeichen zwischen Ablaufverfolgungsflags bewirken, dass die späteren Flags ignoriert werden.

GaTechThomas
quelle