10

SQL 2005 x64 サーバーを使用しており、それに対していくつかのクエリを発行しようとすると (たとえば、インデックスを作成しようとすると)、SPID がすぐに "スリープ" 状態になり、無期限に待機しているように見えます。ブロックされておらず (SP_WHO2 の "BLKBY" 列は空です)、CPU と DiskIO の値は非常に小さく (それぞれ 300 未満)、増加していません。

私のクエリは何を待っている可能性がありますか? インデックスを作成しているテーブルから SELECT * を実行すると、1 分ほどで 100 万行すべてが返されるため、テーブル アクセスがブロックされたり、テーブルの競合が発生したりすることはありません。

私が確認できる他のことについて何か考えはありますか?SQL インスタンスをあきらめて再起動するだけでよいのでしょうか? :)

詳細: SSMS の別のタブから CREATE INDEX を実行していますが、返されません。「実行中」と表示されるだけで返されないため、プロセスが放棄されたとは思いません。

4

3 に答える 3

3

「サスペンド」状態は誤解を招く場合があります。たとえば、ディスク I/O が完了するのを待っている間、クエリが「一時停止」される可能性があります。これは、次のクエリを実行し、wait_type 列を確認することで確認できます。 PAGEIOLATCH_EXディスク I/O を待機しているため、クエリがブロックされていることを示します。これは、クエリが進行していないという意味ではありません。

について詳しくはこちらのページをご覧くださいPAGEIOLATCH_EX

そして、これが前述の情報を返すクエリです

 SELECT qs.percent_complete ,
        qs.session_id ,
        scheduler_id ,
        blocking_session_id ,
        qs.status ,
        command ,
        wait_time ,
        wait_type ,
        last_wait_type ,
        wait_resource ,
        ST.text ,
        host_name ,
        program_name
 FROM   sys.dm_exec_requests qs
        LEFT JOIN sys.dm_exec_sessions es ON ( qs.session_id = es.session_id )
        CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS ST
于 2015-12-02T22:32:31.787 に答える
-2

コマンドが完了し、接続は次のコマンドを待機しています。

http://blogs.msdn.com/psssql/archive/2008/04/21/how-it-works-what-is-a-sleeping-awaiting-command-session.aspx

URL から: 「この問題は SQL Server と同じくらい古いものです。実際には、Sybase の時代にさかのぼりますが、管理者をだまし、困惑させ続けています。

スリープ状態/コマンド待機状態のセッションは、SQL Server へのアクティブなクエリがない単純なクライアント接続です。以下の表は、セッションの実行状態からスリープ状態への遷移を示しています。」

于 2009-12-11T20:07:24.243 に答える