特別な目的のアプリケーションに使用される、性能の低い古いタブレット PC で SQL Server Express のインスタンスを実行しています。定期的に SQL Server プロセスが起動し、CPU を 100% 使用してアプリケーションを停止させます。(技術的には、停止するのではなく、主要なプロセスがタイムアウトするまで速度が低下するだけです。) ハードウェアが交換されるまでにはさらに 2 ~ 3 年かかるため、これはオプションではありません。SQL Server Express を調整する方法はありますか?
1 に答える
MSSQL での CPU ホギング アクティビティを特定する方法はいくつかありますが、その時点ではボックスが完全に応答していないため、選択肢はほとんどありません。SQL プロファイラーを使用して、テーブルまたはファイルへのバックグラウンド トレース ログを実行するのが最善の策かもしれません。
ごく最近まで、Profiler を使用するには有料版の MSSQL が必要でしたが、現在、MS には MSSQL Express 2012 SP1 を含む Profiler が含まれています。ここに直接ダウンロードリンクがあります:
http://www.microsoft.com/en-us/download/details.aspx?id=35579
(注意: MSSQL サーバー インスタンスをアップグレードせずに、Profiler をインストールすることもできます)。
これまでにプロファイラーを使用して CPU を大量に消費するクエリを診断したことがない場合は、次の方法をお勧めします。
- 新しいトレース > MSSQL インスタンスに接続します
- 「CPU」列が選択されていることを確認してください
- すべてのクエリ (Statement/Query/Batch/Procedure/etc) の「開始」イベントと「完了」イベントの両方がチェックされていることを確認してください。
- 「列フィルター」を使用して、「CPU」列に値があるイベントのみを表示します
- トレースの名前と宛先(テーブルまたは .TRN ファイル)を選択します
- トレースを開始し、実行したままにします
CPU の問題が発生した後、ボックスが回復したら、トレース結果を開きます。CPU 列と、100% の使用率が開始された日時に特に注意してください。Profiler を使用してトレースを分析する方法の詳細については、次のリンクを参照してください。