web-dev-qa-db-ja.com

SQL Server 2008 R2 SP1-負の値を示すTempdb "利用可能な空き領域"

この問題が私を混乱させているので、助けてください...

Tempdbには、4つのデータファイルと1つのログファイルがあります。それらはすべて同じ専用ドライブにあります。

SQL Server Management Studio(SSMS)でtempdbを右クリックして[プロパティ]-> [一般]を表示すると、 "サイズ"が〜65000 MB、 "空き容量"が〜64000 MBと表示されます。しかし、GUIを使用してファイルを縮小しようとすると、「現在割り当てられているスペース」は変更されておらず、初期サイズが表示されたままです。

これは、「使用可能な空き容量」が負の数として表示される場所でもあります。これまでに見つけた唯一の回避策は、SQL Serverを再起動してtempdbをフラッシュすることですが、これを続けることができません。

誰かがこれに遭遇し、根本的な原因/永久的な解決策を知っていることはありますか?

7
Chinesinho

Open Query Analyzer Run DBCC UPDATEUSAGE('tempdb')実行後、temdb値を確認すると、真の値が表示されます。

また、 this が役立つ場合があります。

また、dbcc opentranまたはsp_whoisactive(Adam MechanicのSP)を使用して、開いているトランザクションがあるかどうかを確認します。

これは、SQL Server 2008 SP1で説明されているバグでした ここ

好奇心から、それはパフォーマンスの問題を引き起こしていますか?

2
Kin Shah

さて、あなたはあなたのtempdb設定をチェックし、あなたのサーバーによるそれの使用法を概観する必要があります。マイクロソフトは、tempdbを管理し、そのパフォーマンスを最適化するための主要なアドバイスを提供しています( http://msdn.Microsoft.com/en-us/library/ms175527(v = sql.105).aspx を参照)。それらを適用してみて結果を確認してください(私の場合、私の17GBデータベースを4GBに最適化するのに役立ちました)

また、sp_spaceused proc it temp databaseを使用することもできます。これは、どのテーブルがデータファイルのスペースのほとんどを消費しているかを示します。プロファイラーを使用して、ファイルの自動拡張を検出し、ファイルの自動拡張をログに記録することもできます。頻繁に変更される場合-tempDbは自動的に追加のスペースを使用し、おそらく#tmpテーブルを使用するロジックを変更する必要があります。

稼働中のサーバーのtempdbを縮小すると、他のデータベースのクエリで問題が発生する可能性があります(シングルモードでのみ実行してください)

0
Alex