KILL (Transact-SQL)KILL (Transact-SQL)

適用対象: ○SQL Server (2008 以降) ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

セッション ID または作業単位 (UOW) に基づいてユーザーのプロセスを終了します。Ends a user process that is based on the session ID or unit of work (UOW). 指定したセッション ID または UOW に元に戻す作業が多く含まれている場合、KILL ステートメントは、完了するまで時間がかかる可能性があります。If the specified session ID or UOW has much work to undo, the KILL statement may take some time to complete. 特に、プロセスに長いトランザクションのロールバックが含まれている場合、このプロセスは完了するまで時間がかかります。The process takes longer to complete particularly when the process involves rolling back a long transaction.

KILL は通常の接続を終了します。これにより、指定されたセッション ID に関連付けられたトランザクションが内部的に停止します。KILL ends a normal connection, which internally stops the transactions that are associated with the specified session ID. MicrosoftMicrosoft 分散トランザクション コーディネーター (MS DTC) が使用されることがあります。At times, MicrosoftMicrosoft Distributed Transaction Coordinator (MS DTC) might be in use. MS DTC が使用されている場合も、このステートメントを使用して、孤立している分散トランザクションと疑いのある分散トランザクションを終了できます。If MS DTC is in use, you can also use the statement to end orphaned and in-doubt distributed transactions.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for SQL Server  
  
KILL { session ID | UOW } [ WITH STATUSONLY ]   
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
KILL 'session_id'  
[;]   

引数Arguments

セッション IDsession ID
終了するプロセスのセッション ID です。Is the session ID of the process to end. セッション ID は、接続されたときに各ユーザー接続に割り当てられる一意の整数 (int 型) です。session ID is a unique integer (int) that is assigned to each user connection when the connection is made. セッション ID の値は、接続の間、接続に関連付けられます。The session ID value is tied to the connection for the duration of the connection. 接続が終了すると、この整数値は解放され、新しい接続に再度割り当てることができます。When the connection ends, the integer value is released and can be reassigned to a new connection.
次のクエリを使用して、強制終了する session_id を識別できます。The following query can help you identify the session_id that you want to kill:

SELECT conn.session_id, host_name, program_name,
    nt_domain, login_name, connect_time, last_request_end_time 
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
   ON sess.session_id = conn.session_id;

UOWUOW
適用対象: (SQL Server 2008:SQL Server 2008 から SQL Server 2017SQL Server 2017Applies to: (SQL Server 2008:SQL Server 2008 through SQL Server 2017SQL Server 2017

分散トランザクションの作業単位 ID (UOW) を指定します。Identifies the Unit of Work ID (UOW) of distributed transactions. UOW は、sys.dm_tran_locks 動的管理ビューの request_owner_guid column から取得できる GUID です。UOW is a GUID that may be obtained from the request_owner_guid column of the sys.dm_tran_locks dynamic management view. UOW は、エラー ログや MS DTC モニターからも取得できます。UOW also can be obtained from the error log or through the MS DTC monitor. 分散トランザクションの監視の詳細については、MS DTC のドキュメントを参照してください。For more information about monitoring distributed transactions, see the MS DTC documentation.

孤立した分散トランザクションを終了するには、KILL UOW を使用します。Use KILL UOW to stop orphaned distributed transactions. これらのトランザクションは、実際のセッション ID には関連付けられていませんが、人為的にセッション ID = '-2' に関連付けられています。These transactions aren't associated with any real session ID, but instead are associated artificially with session ID = '-2'. sys.dm_tran_locks、sys.dm_exec_sessions、または sys.dm_exec_requests のいずれかの動的管理ビューのセッション ID 列を照会すれば、孤立したトランザクションをこのセッション ID で容易に識別できます。This session ID makes it easier to identify orphaned transactions by querying the session ID column in sys.dm_tran_locks, sys.dm_exec_sessions, or sys.dm_exec_requests dynamic management views.

WITH STATUSONLYWITH STATUSONLY
指定した_セッション ID_ または _UOW_の、前の KILL ステートメントに従って実行されているロールバックの進行状況レポートを生成します。Generates a progress report about a specified session ID or UOW that is being rolled back because of an earlier KILL statement. KILL WITH STATUSONLY では、セッション ID または UOW の終了もロールバックも実行されません。KILL WITH STATUSONLY doesn't end or roll back the session ID or UOW. このコマンドは、ロールバックの現在の進行状況のみを表示します。The command only displays the current progress of the rollback.

RemarksRemarks

KILL は、通常は、他の重要なプロセスをロックを使用してブロックしているプロセスを終了するために使用されます。KILL is commonly used to end a process that is blocking other important processes with locks. KILL は、必要なシステム リソースを使用しているクエリを実行しているプロセスを停止するためにも使用できます。KILL can also be used to stop a process that is executing a query that is using necessary system resources. システム プロセスと拡張ストアド プロシージャを実行しているプロセスは終了できません。System processes and processes running an extended stored procedure can't be ended.

重要なプロセスが実行している場合は特に、KILL の使用には注意してください。Use KILL carefully, especially when critical processes are running. ユーザー自身のプロセスは終了できません。You can't kill your own process. 次のプロセスも、終了すべきではありません。You also shouldn't kill the following processes:

  • AWAITING COMMANDAWAITING COMMAND
  • CHECKPOINT SLEEPCHECKPOINT SLEEP
  • LAZY WRITERLAZY WRITER
  • LOCK MONITORLOCK MONITOR
  • SIGNAL HANDLERSIGNAL HANDLER

現在のセッションのセッション ID 値を表示するには、@@SPID を使用します。Use @@SPID to display the session ID value for the current session.

使用中のセッション ID 値に関するレポートを取得するには、sys.dm_tran_locks、sys.dm_exec_sessions、および sys.dm_exec_requests の各動的管理ビューで session_id 列のクエリを実行します。To obtain a report of active session ID values, query the session_id column of the sys.dm_tran_locks, sys.dm_exec_sessions, and sys.dm_exec_requests dynamic management views. sp_who システム ストアド プロシージャが返す SPID 列を確認することもできます。You can also view the SPID column that the sp_who system stored procedure returns. 特定の SPID のロールバックが進行中である場合、その SPID に関する sp_who 結果セット内の cmd 列には、KILLED/ROLLBACK が示されます。If a rollback is in progress for a specific SPID, the cmd column in the sp_who result set for that SPID indicates KILLED/ROLLBACK.

特定の接続がデータベース リソースをロックして別の接続の進行を妨げている場合、sys.dm_exec_requestsblocking_session_id 列、または sp_who が返す blk 列に、ブロックしている接続のセッション ID が示されます。When a particular connection has a lock on a database resource and blocks the progress of another connection, the session ID of the blocking connection shows up in the blocking_session_id column of sys.dm_exec_requests or the blk column returned by sp_who.

KILL コマンドは、状態が不明な分散トランザクションの解決にも使用できます。The KILL command can be used to resolve in-doubt distributed transactions. これらのトランザクションは、データベース サーバーまたは MS DTC コーディネーターを予定外に再起動したために生じた未解決の分散トランザクションです。These transactions are unresolved distributed transactions that occur because of unplanned restarts of the database server or MS DTC coordinator. 未確定トランザクションの詳細については、「マークされたトランザクションを使用して関連するデータベースを一貫した状態に復元する方法 (完全復旧モデル)」の「2 フェーズ コミット」を参照してください。For more information about in-doubt transactions, see the "Two-Phase Commit" section in Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

WITH STATUSONLY を使用するUsing WITH STATUSONLY

KILL WITH STATUSONLY は、以前の KILL session ID|UOW ステートメントに従ってセッション ID または UOW が現在ロールバックされている場合に、レポートを生成します。KILL WITH STATUSONLY generates a report if the session ID or UOW rolls back because of a previous KILL session ID|UOW statement. 進行状況レポートには、完了したロールバックの進行状況 (% 単位) と予想残り時間 (秒単位) が示されます。The progress report states the amount of rollback completed (in percent) and the estimated length of time left (in seconds). レポートは、次の形式で示されます。The report states it in the following form:

Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds

KILL session ID|UOW WITH STATUSONLY ステートメントの実行時にセッション ID または UOW のロールバックが完了している場合、KILL session ID|UOW WITH STATUSONLY は次のエラー メッセージを返します。If the rollback of the session ID or UOW finishes before the KILL session ID|UOW WITH STATUSONLY statement runs, KILL session ID|UOW WITH STATUSONLY returns the following error:

"Msg 6120, Level 16, State 1, Line 1"  
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."

このエラーは、ロールバックされているセッション ID または UOW が存在しない場合にも発生します。This error also occurs if no session ID or UOW is being rolled back

WITH STATUSONLY オプションを設定しない状態で同じ KILL ID|UOW ステートメントを繰り返すことによって、同じ状態レポートを取得できます。The same status report can be obtained by repeating the same KILL session ID|UOW statement without using the WITH STATUSONLY option. ただし、このオプションをこの方法で繰り返すことはお勧めしません。However, we don't recommend repeating the option this way. 新しい KILL ステートメントを実行する前に、ロールバックが完了し、セッション ID が新しいタスクに再割り当てされている場合、KILL session ID ステートメントの繰り返しによって、新しいプロセスが停止する可能性があります。If you repeat a KILL session ID statement, the new process might stop if the rollback finishes and the session ID is reassigned to a new task before the new KILL statement runs. WITH STATUSONLY を指定することで、新しいプロセスが停止しないようにしてください。Prevent the new process from stopping by specifying WITH STATUSONLY.

アクセス許可Permissions

SQL ServerSQL Server: ALTER ANY CONNECTION 権限が必要です。SQL ServerSQL Server: Requires the ALTER ANY CONNECTION permission. ALTER ANY CONNECTION は、固定サーバー ロール sysadmin または processadmin のメンバーシップに含まれています。ALTER ANY CONNECTION is included with membership in the sysadmin or processadmin fixed server roles.

SQL データベースSQL Database: KILL DATABASE CONNECTION 権限が必要です。SQL データベースSQL Database: Requires the KILL DATABASE CONNECTION permission. サーバー レベル プリンシパル ログインが、KILL DATABASE CONNECTION です。The server-level principal login has the KILL DATABASE CONNECTION.

使用例Examples

A.A. KILL を使用してセッションを停止するUsing KILL to stop a session

次の例は、セッション ID 53 を停止する方法を示しています。The following example shows how to stop session ID 53.

KILL 53;  
GO  

B.B. KILL セッション ID WITH STATUSONLY を使用して進行状況レポートを取得するUsing KILL session ID WITH STATUSONLY to obtain a progress report

次の例では、特定のセッション ID に対するロールバック プロセスの状態を取得します。The following example generates a status of the rollback process for the specific session ID.

KILL 54;  
KILL 54 WITH STATUSONLY;  
GO  
  
--This is the progress report.  
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.  

C.C. KILL を使用して、孤立した分散トランザクションを停止するUsing KILL to stop an orphaned distributed transaction

次の例は、D5499C66-E398-45CA-BF7E-DC9C194B48CFUOW で、孤立した分散トランザクション (セッション ID = -2) を停止する例を示しています。The following example shows how to stop an orphaned distributed transaction (session ID = -2) with a UOW of D5499C66-E398-45CA-BF7E-DC9C194B48CF.

KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF';  

参照See Also

KILL STATS JOB (Transact-SQL) KILL STATS JOB (Transact-SQL)
KILL QUERY NOTIFICATION SUBSCRIPTION (Transact-SQL) KILL QUERY NOTIFICATION SUBSCRIPTION (Transact-SQL)
組み込み関数 (Transact-SQL) Built-in Functions (Transact-SQL)
SHUTDOWN (Transact-SQL) SHUTDOWN (Transact-SQL)
@@SPID (Transact-SQL) @@SPID (Transact-SQL)
sys.dm_exec_requests (Transact-SQL) sys.dm_exec_requests (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL) sys.dm_exec_sessions (Transact-SQL)
sys.dm_tran_locks (Transact-SQL) sys.dm_tran_locks (Transact-SQL)
sp_lock (Transact-SQL) sp_lock (Transact-SQL)
sp_who (Transact-SQL)sp_who (Transact-SQL)