web-dev-qa-db-ja.com

SQL Serverで一時データベースのコンテンツをクリアする方法は?

タイトルが示すように、SQL Serverの一時データベースのコンテンツをクリアします。 SolarWindsが重大なアラートを生成しているので、tempdbの作業ファイルと作業テーブルを消去したいと思います。

これどうやってするの? MSSQLSERVERサービスを再起動してコンテンツをクリアできますか?

2
Commander

本当にクリアする必要があると感じた場合は、はい、SQL Serverを再起動するとクリアされます。ただし、これは一時的な解決策である可能性が高く、数日後に同じ状態に戻ります。 SQL Serverの再起動は、SQL Serverの観点からtempdbのコンテンツをクリアする唯一の方法です。別の可能な選択肢は、tempdbでオブジェクトを作成しているアプリケーションを再起動することです。

あなたが提供する少しの情報を考えると、私たちにとって最善の行動方針を知ることは不可能です。考慮すべき事項:

  • SolarWindsが問題があると言ったからといって、必ずしも問題があるとは限りません。多くの監視ツールにはデフォルトが設定されており、特定のサーバーで100%期待されていることに対して「クリティカル」アラートを送信します。たとえば、Dynamics AX SQL Serverがほとんどの監視ツールのデフォルトのtempdbしきい値の多くをトリガーすることを期待します。重大なtempdbの競合がなく、領域が不足していない場合は、おそらく重要なものはありません。 SQL Serverを使用しているアプリケーションにパフォーマンスの問題がありますか?パフォーマンスについて文句を言う人はいますか?そうでない場合、SolarWindsアラートは現実を反映しておらず、しきい値を調整する必要があるかもしれません。覚えておくべきことの1つは、これらのアプリケーションの多くは、ストレージが非常に遅いときに最初にコード化およびテストされたことです。 SSDにtempdbがある場合、SolarWindsがどのしきい値を使用するかを決定したときにおそらく使用されていたミラー化されたローカルSCSIディスクのカップルよりもはるかに多くの負荷がかかる可能性があります。

  • Tempdbのサイズは適切ですか?一部のアプリケーションはtempdbを頻繁に使用し、他のアプリケーションが通常使用するよりもはるかに多くを必要とします。 tempdbの領域が不足している場合は、tempdbに必要なファイルが大きくなる可能性があります。

  • 各プロセッサに最大8つのtempdbデータベースファイルがありますか?

  • SQL Server 2014以前を使用している場合、トレースフラグ1117および1118が有効になっていますか?そうでない場合は、それらを調査します。tempdbの使用量が非常に多いアプリケーションがある場合は、これらを有効にすることをお勧めします(sql-server-2016タグを使用したことがあるので、これは他の読者の利益のためです) 。

  • Tempdbオブジェクトを「リーク」させるアプリケーションの欠陥はありますか? tempdbテーブルの数と使用量が常に増加し、安定しない場合は、これを調査することをお勧めします。

shrink への衝動に抵抗できない場合は、TRUNCATEONLYを使用して縮小します。 TRUNCATEONLYは、それを大幅に縮小するか、まったく縮小しない場合があります。これは、最後に使用されたエクステントがどこにあるかに依存します。ファイルを指定されたサイズに縮小すると、データがファイルの最後から中央にある空き領域に移動するために、データの再編成(つまり、データの断片化)が開始されます。そのためにはロックが必要であり、ユーザー/アプリケーションにはパフォーマンスに大きな影響があります。そして、そのデータを再編成するのにどれくらいの時間がかかるかは決してわかりません。

正確なメトリックに関する質問に追加する詳細情報がある場合、SolarWindsがアラートを出していることは役に立ちます。

12
Tony Hinkle