2

重複の可能性:
SQL Server 2005 のアクティビティ モニターの問題

データベース サーバーでいくつかのプロセスを実行していて、CPU を大量に消費しています。プロセスに関する詳細を表示すると、次のようになります。

set transaction isolation level  read committed

その他の詳細は次のとおりです。

  • ステータス: 睡眠中
  • オープン トランザクション: 0
  • コマンド: コマンド待ち
  • ログイン時間: 12時間以上前
  • 最後のバッチ: 2 分未満前

最近、アクティビティ モニターを見ていませんが、サーバー管理者から、CPU が 100% 近く実行されており、SQL Server が過半数を占めているという話を聞いたとき、非常に興味を持ちました。そのコマンドはさまざまな (Web) アプリケーションからのものですが、実際にそのコードを使用するアプリケーションはありません。Coldfusion で作成されたものもあれば、.NET で作成されたものもあります。

このコマンドは SQL Server によって生成されますか?

何が原因ですか?

それらのプロセスを強制終了しても安全ですか?

4

3 に答える 3

1

あなたの以前の質問からの答えはまだ当てはまります:

いいえ、SQLはそれ自体ではステートメントを実行しません。これらのステートメントは、Webアプリからのものです。これらはアプリにSqlCommandテキストとして明示的に存在しない場合がありますが、コードと実際にSQL Serverに到達するものの間には、さまざまなフレームワークおよびORMからの数万行のコードがあります。簡単な例は、セッション設定を初期化するためにかなり大量のバッチを送信する、ベニングのSqlConnection.Open()です。このバッチは、設定されたトランザクション分離レベルの読み取りコミットで終了します。

それらはあなたのアプリケーションであるため、あなたがそれらを殺すことができるかどうかを知ることは不可能です。

于 2009-12-22T21:36:24.793 に答える
0

詳細を教えていただけますか?

このコマンドは、トランザクションが開始される前にコミットされたトランザクションを読み取るための分離レベルを設定するだけであり、問​​題の原因ではありません。

SQLプロファイラーを試して原因を特定することをお勧めします。大量のトランザクションを受信する場合に備えて、フィルターを設定するときは注意してください。

于 2009-12-22T21:34:14.953 に答える
0

Remus Rusanuに同意しますが、正確な質問を明確にするために、「コミットされたトランザクション分離レベルを設定する」は「プロセス」ではありません。これは、アプリからのステートメントがどのように処理されるかを指示するステートメントです。

これは、セッションの一部として実行されるクエリ (ColdFusion の場合、cftransaction 内にない特定の cfquery) がコミットされたデータのみを読み取ることを示しています。cftransaction を使用すると、異なるトランザクション分離レベルが表示され、クエリがローカルのコミットされていないデータを読み取ることができることに気付くでしょう。

于 2009-12-23T12:40:30.057 に答える