2

SQL Server 2012 データベースにアクセスするサード パーティ製アプリケーション[Microsoft][ODBC SQL Server Driver]Query timeout expiredを約 20 分間実行すると、エラーが発生します。

これは、アプリケーションがエラーを受け取り始めた後にデータベースに表示されるものです。

クエリのスクリーンショット -1

SPID 102 は、上記のクエリには表示されません。同じプロセスの同じアプリケーションからの別の接続です。以下のスクリーンショットで、この詳細をキャプチャすることができました。このスクリーンショットの一番上の行にあるものです。スクリーンショットを撮るときにスクロールバーが右に移動したことをお詫びします。

クエリのスクリーンショット - 2

AutoShrinkTRUEこれが発生したとき、このデータベースでは に設定されていました。

次のようになります。

  • 後で開始されたサード パーティ製アプリケーションからの複数の接続が SPID 27 で待機しています。これは AUTOSHIRNK コマンドです。

  • SPID 27 は、同じサードパーティ アプリケーションからの別の接続である SPID 102 を待機しています。

質問:

  • SPID 27 との接続がデータベースAutoShirnkに設定されてから作成されたかどうかを確認する方法はありますか?TRUE

  • その場合、なぜ SPID 102 で待機し、他の接続 (83、85、86、88、および 90) が 27 で待機しているのはなぜですか?

以下のリンクにある TechNet の記事によると、AutoShrink はデータベース上のアクティビティに影響を与えるべきではありません。

データベースの AUTO_SHRINK オプションが ON に設定されている場合、データベース エンジンはデータベース内のファイルのサイズを縮小します。このアクティビティはバックグラウンドで発生し、データベース内のユーザー アクティビティには影響しません。

データベースの縮小

ノート:

  • これは現在、この問題が発生する SQL Server 2012 SP1 で実行されています。

  • アプリケーションのこのプロセスは、アプリケーションが SQL Server 2008 SP3 上のデータベースから実行されている場合に正常に機能します。

4

1 に答える 1

1

AUTO SHRINK はラウンド ロビン方式で動作し、DB に空き領域がある場合は、その割り当てを解除します。

長期ブロックのような効果はありませんが、IO と CPU の両方で多くのリソースを消費します。また、バッファ プールを介して大量のデータを移動するため、ホット ページがディスクにプッシュされ、処理がさらに遅くなる可能性があります。サーバーがすでに IO サブシステムの限界を押し上げている場合、縮小を実行すると限界を超えてしまい、ディスク キューの長さが長くなり、場合によっては IO タイムアウトが発生する可能性があります。

ここで多くの回答と説明が得られます - http://www.sqlskills.com/blogs/paul/auto-shrink-turn-it-off/

于 2014-10-01T15:53:03.720 に答える