web-dev-qa-db-ja.com

QUERYTRACEON 9481を使用する特権をユーザーに付与する

Microsoft suggests 互換性レベル120で実行されているSQL Server 2014データベースに対してパフォーマンスが「低下」したクエリにOPTION (QUERYTRACEON 9481)を使用。

私の状況では、「劣化」とは、数秒から数分以上になることを意味します。パフォーマンスに関しては、9411は非常にうまく機能します。ただし、通常のユーザーは、クエリ結果(SSRSレポートの実行)ではなく、Niceエラーを受け取ります。

User 'xxxxx' does not have permission to run DBCC TRACEON.

ドキュメントには、DBCC TRACEONを実行するには ユーザーはsysadminロールのメンバーである必要があります と記載されています。

非システム管理者がこのヒントを使用するクエリを実行できるようにするための回避策はありますか?

ほとんどのクエリは許容範囲内であるか、または適切に機能しているため、互換性レベルを110に戻さないほうがよいでしょう。

7
poke

クエリのsysadminとして プランガイド を作成できます。これにより、ユーザーは既存のプランを実行できます。それ以外の場合は、クエリを書き直すだけでほぼすべてのことができます。

プランガイドでのQUERYTRACEONの使用

4
Joel

Sa権限は必要ないため、ヒントオプションを使用してください。

オプション(ヒントを使用( 'FORCE_LEGACY_CARDINALITY_ESTIMATION'))

0
lostinbrisbane