T-SQL - OPTION (FAST x) und Trace-Flag 8722

9

Ich habe lange gesucht und immer noch keine Antwort auf mein Problem gefunden.

Unsere Dynamics AX generiert Abfragen mit dem Abfragehinweis OPTION (FAST x), wodurch manchmal die Verwendung eines fehlerhaften Ausführungsplans erzwungen wird. Die Entwickler sagen, es ist standardmäßig und schwer zu ändern (muss möglicherweise auf allen Formularen behoben werden).

Ich war also auf der Suche nach einer Möglichkeit, diese Hinweise mithilfe von Ablaufverfolgungsflags zu überschreiben. Ich habe das schöne Trace-Flag 8722 gefunden, mit dem SQL Server einige Abfragehinweise ignorieren soll, insbesondere die in der OPTION-Klausel.

Dies funktioniert jedoch in meinem Fall nicht. Ich habe versucht, auch das Ablaufverfolgungsflag 8602 zu aktivieren (Indexhinweise deaktivieren), aber meine Abfrage wird weiterhin mit dem FAST x-Hinweis ausgeführt (er ist viel langsamer als beim tatsächlichen Entfernen der OPTION-Klausel).

Ich habe auch versucht, den Plan-Cache zu leeren, ohne Erfolg.

Irgendwelche Ideen? Vermisse ich etwas

PS Ich habe die Trace-Flags global aktiviert. Dies ist die SQL Server 2012 Developer Edition

Nelson 2.0
quelle
1
Wie haben Sie die Trace-Flags aktiviert? Haben Sie es über den Serverstart oder mit dbcc traceon eingeschaltet? dbcc traceon ist ein Trace-Flag pro Verbindung, sodass das Aktivieren in einer Clientverbindung keine Auswirkungen auf andere Serververbindungen hat. Um es serverweit einzuschalten, müssen Sie -T <Traceflagnumber> zur Startbefehlszeile hinzufügen. Ich glaube, Sie können möglicherweise einen dbcc-Traceon (flag1, flag2, ..., - 1) verwenden, um ihn serverweit anzuwenden, aber ich habe es nie versucht.
Mike
Hallo Mike, ich habe die Trace-Flags global mit DBCC TRACEON (8722, -1) aktiviert und dann den Status mit DBCC TRACESTATUS überprüft. Möglicherweise wird das Ablaufverfolgungsflag nicht mehr offiziell unterstützt, oder ich muss es tatsächlich in den Startparameter einfügen und den Dienst neu starten, oder es ist Gegenstand von CU3 (ich verwende 2012 SP2 RTM).

Antworten:

10

Soweit ich weiß, wurden die Trace-Flags 8722, 8755 und 8602 nie offiziell dokumentiert. Das letzte Mal, dass ich mich daran erinnere, dass sie wirksam waren, war in SQL Server 2000, daher ist es nicht verwunderlich, dass Sie feststellen, dass sie in SQL Server 2012 ignoriert werden.

Bei bestimmten Abfragemustern ist es häufig möglich, den FAST nHinweis mithilfe von Planleitfäden zu entfernen . Trotzdem ist es am besten, die AX-Entwickler dazu zu bringen, das Problem auf der Anwendungsseite zu beheben.

Paul White 9
quelle