T-SQL-オプション(FAST x)およびトレースフラグ8722


9

私は長い間検索してきましたが、それでも私の問題に対する答えが見つかりません。

私たちのDynamics AXは、クエリヒントOPTION(FAST x)でクエリを生成しています。これにより、不適切な実行プランが使用される場合があります。開発者は、それはデフォルトであり、変更するのが難しいと言います(潜在的にすべてのフォームで修正する必要があります)。

したがって、トレースフラグを使用してこれらのヒントを上書きする方法を探していました。SQL Serverに一部のクエリヒント、特にOPTION句のヒントを無視させると主張されている素敵なトレースフラグ8722を見つけました。

ただし、これは私の場合は機能しません。トレースフラグ8602(インデックスヒントを無効にする)も有効にしようとしましたが、クエリはまだFAST xヒントを使用して実行されています(実際にOPTION句を削除する場合よりもはるかに遅くなります)。

プランキャッシュもクリアしようとしましたが、役に立ちませんでした。

何か案は?何か不足していますか?

PS私はトレースフラグをグローバルに有効にしました。これはSQL Server 2012 Developerエディションです


1
どのようにしてトレースフラグをオンにしましたか?サーバーの起動またはdbcc traceonを使用してオンにしましたか?dbcc traceonは接続ごとのトレースフラグであるため、1つのクライアント接続でこのフラグをオンにしても、他のサーバー接続には影響しません。サーバー全体で有効にするには、起動コマンドラインに-T <traceflagnumber>を追加する必要があります。dbcc traceon(flag1、flag2、...、-1)を使用してサーバー全体に適用できると思いますが、私は試したことはありません。
Mike

こんにちは、私はDBCC TRACEON(8722、-1)を使用してトレースフラグをグローバルに有効にし、DBCC TRACESTATUSでステータスを確認しました。たぶん、トレースフラグはもはや公式にサポートされていないか、実際にそれを起動パラメーターに入れてサービスを再起動する必要があります。

回答:


10

私の知る限りでは、トレースフラグ8722、8755、および8602は公式には文書化されていません。最後にそれらが効果的だったことをSQL Server 2000で思い出したので、SQL Server 2012では無視されていることは驚くに値しません。

特定のクエリパターンについては、FAST nプランガイドを使用してヒントを削除できることがよくあります。そうであっても、最良の修正は、AX開発者にアプリケーション側で修正することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.