クエリを実行している SQL Server 2005 では、TokenAndPermUserStore キャッシュのサイズを拡張する場合は完了する時間がかかる

文書翻訳 文書翻訳
文書番号: 927396
# をバグ: 429501 (SQLBUDT)
すべて展開する | すべて折りたたむ

目次

現象

Microsoft SQL Server の 2005 年には、次の現象が発生する可能性があります。
  • 実行速度は、通常、クエリに時間がかかる実行が終了する時間です。
  • SQL Server プロセスの CPU 使用率は、通常。
  • アドホック クエリを実行すると、パフォーマンスが低下する場合は、クエリからを表示、 sys.dm_exec_requests または sys.dm_os_waiting_tasks 動的管理ビューです。ただし、クエリはありません。すべてのリソースを待機しているようです。
  • TokenAndPermUserStore キャッシュ ストアのサイズが一定の速度で拡大します。
  • TokenAndPermUserStore キャッシュ ストアのサイズには、注文数百メガバイト (MB)。
  • 場合によっては、DBCC FREEPROCCACHE コマンドの実行は一時的な救済を提供します。
TokenAndPermUserStore キャッシュのサイズを監視するには、次のようなクエリを使用します。
SELECT SUM(single_pages_kb + multi_pages_kb) AS 
   "CurrentSizeOfTokenCache(kb)" 
   FROM sys.dm_os_memory_clerks 
   WHERE name = 'TokenAndPermUserStore'

原因

TokenAndPermUserStore キャッシュ ストアいずれかのセキュリティ トークンの種類を保持します。
  • LoginToken
  • TokenPerm
  • UserToken
  • SecContextToken
  • TokenAccessResult。
さまざまなクラスTokenAccessResult の項目も表示されます。この問題は、65535 のクラスを持つ多くの TokenAccessResult エントリが存在するために発生します。

SQL Server のインスタンスが、高い割合でランダムの動的クエリの実行、65535 でクラスに適用する TokenAccessResult エントリの多くに注意してください。は、 sys.dm_os_memory_cache_entries 表示します。65535 のクラスに適用する TokenAccessResult エントリ特殊なキャッシュ エントリを表します。これらのキャッシュ エントリ用の累積的なアクセス許可のチェックに使用されます。照会します。たとえば、次のクエリを実行する可能性があります。
select * 
from t1 join t2 join t3
この例では、このクエリの累積アクセス許可チェック SQL Server を計算します。このチェックは、t1、t2、t3 を選択をユーザーが持っているかどうかを確認します。この累積的なアクセス許可のチェック結果は、TokenAccessResult エントリに埋め込まれ、挿入されます、TokenAndPermUserStore キャッシュ ストアが 65535 の ID。同じユーザーが再利用されますまたは、次のクエリを複数回実行する場合は、SQL Server を再利用、TokenAccessResult キャッシュ エントリに 1 回。

このキャッシュを保存すると成長を時間の増加を再利用する既存のエントリを検索します。検索は 1 つだけのスレッドを実行できるようにこのキャッシュへのアクセスが制御されます。この現象最終的に原因を小さくには、クエリのパフォーマンスと複数の CPU 使用率が発生します。

解決方法

サービス パックの情報

この問題を解決するには、SQL Server 2005 の最新の service pack を入手します。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
913089 SQL Server 2005 の最新の service pack を入手する方法
この問題を解決するには、SQL Server 2005 Service Pack 2 は、アクセス トークンのキャッシュの動作を変更します。既定では、アドホック クエリの TokenAccessResult セキュリティ キャッシュ エントリ特定のアドホック クエリを再度実行するとのみがキャッシュされます。

回避策

この問題を回避するには、いずれかを使用して、次のメソッド。
  • アドホック クエリを明示的にパラメーター化します。

    メモ
    • このメソッドを使用すると、アドホック クエリとその計画を効果的に再利用できます。
    • このメソッドを使用すると、TokenAccessResult エントリを作成する必要はありません。他のパラメーターと共に、アドホック クエリを実行するたびにします。
    • この方法では、TokenAndPermUserStore のサイズキャッシュは、妥当な制限の下です。
  • アドホック クエリ内で、ストアド プロシージャ、および保存されている使用をラップします。非定型のクエリーを直接実行するのではなく、手順します。

    メモ
    • 実行プラン キャッシュ内にあるステートメントは、ストアド プロシージャです。
    • TokenAccessResult のエントリを各ステートメント実行プランのエントリに関連付けられています。
    • このストアド プロシージャである限り、実行を計画します。ままになりますキャッシュ内で、ストアド プロシージャを実行するたびを効果的に再利用、TokenAccessResult のエントリです。そのためには、新しい TokenAccessResult を作成する必要はありません。エントリです。
  • FORCE_PARAMETERIZATION のデータベース オプションを有効にします。

    メモ
    • このメソッドを使用すると、アドホック クエリとその計画を効果的に再利用できます。
    • このメソッドを使用すると、TokenAccessResult エントリを作成する必要はありません。他のパラメーターと共に、アドホック クエリを実行するたびにします。
    • この方法では、TokenAndPermUserStore のサイズキャッシュは、妥当な制限の下です。
  • 可変のアドホック クエリとして実行されるログインを追加します。サーバのシステム管理者グループのメンバーです。

    メモ
    • TokenAccessResult エントリだけは、アド ホックの作成します。メンバーではないログインによって、クエリの実行時のクエリ、sysadmin サーバーのグループです。
    • TokenAccessResult のエントリが作成されるため、この動作を管理しやすいサイズに TokenAndPermUserStore のキャッシュ ・ サイズを維持します。
  • TokenAndPermUserStore キャッシュからのエントリをフラッシュします。

    メモ
    • これを行うには、次のコマンドを実行します。
      DBCC FREESYSTEMCACHE (TokenAndPermUserStore)
    • 理想的をクリックして、しきい値の監視しよう、問題が表示しているときのキャッシュ サイズを TokenAndPermUserStore。
    • 次の操作を実行するスケジュールされた SQL Server のエージェント ジョブを作成できます。
      • TokenAndPermUserStore キャッシュのサイズを確認します。サイズです。これを行うには、次のコマンドを実行します。
        SELECT SUM(single_pages_kb + multi_pages_kb) AS 
           "CurrentSizeOfTokenCache(kb)" 
           FROM sys.dm_os_memory_clerks 
           WHERE name = 'TokenAndPermUserStore'
      • キャッシュ ・ サイズが、見た、しきい値よりも大きい場合は、次のコマンドを実行します。
        DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')

関連情報

詳細については、マイクロソフト サポート技術記事を表示するのには、次の資料番号をクリックしてください。
933564FIX SQL Server 2005 で USERSTORE_TOKENPERM キャッシュ ストアのメモリの消費量が徐々 に増加が発生します。
959823 TokenAndPermUserStore キャッシュ ストアでは、SQL Server 2005 Service Pack 3 用のクォータをカスタマイズする方法

プロパティ

文書番号: 927396 - 最終更新日: 2011年8月8日 - リビジョン: 8.0
キーワード:?
kbinfo kbtshoot kbprb kbsql2005tsql kbmt KB927396 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:927396
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com