現象

Microsoft SQL Server 2016 または2017で、多数の一時テーブルを作成または削除していることを前提としています。 一部のアプリケーションのワークロードは、一時テーブルのキャッシュを無効にします。 たとえば、一時テーブルを作成してから、ALTER TABLE または CREATE INDEX を作成して、一時テーブルのキャッシュ を無効 にします。 このような状況では、次の問題が発生することがあります。

  • システムカタログの tempdb でのデータ定義言語 (DDL) の競合、および PAGELATCH_EX、PAGELATCH_SH、PAGELATCH_UP wait 型で待機している多数のセッションの競合が発生します。

  • この状況は、エントリ数が4000よりも多い場合にもワークロードに影響します。 ただし、ワークロードによって異なる場合があります。 次の例を参照してください。

     

    SELECT [name], [type], [entries_count], [entries_in_use_count]

    FROM sys.dm_os_memory_cache_counters

    WHERE [type] = N'CACHESTORE_TEMPTABLES'

    氏名

    種類

    entries_count

    entries_in_use_count

    テーブル変数 & 一時テーブル

    CACHESTORE_TEMPTABLES

    <カウント>

    <カウント>

解決方法

この問題は、SQL Server の次の累積的な更新プログラムで修正されています。

       SQL Server 2017 の累積更新プログラム5

       SQL Server 2016 SP1 の累積更新プログラム8

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。

SQL Server 2017 の最新の累積的な更新プログラム

SQL Server 2016 の最新の累積的な更新プログラム

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

関連情報

ソフトウェアの更新を説明するために Microsoft が使用する 用語について説明します。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。