Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Завершает пользовательский процесс, определяемый идентификатором сеанса или единицей работы (UOW). Если указанный идентификатор сеанса или UOW имеет много работы для отмены, KILL
инструкция может занять некоторое время. Процесс особенно затягивается при откате длительной транзакции.
KILL
завершает нормальное подключение, которое внутренне останавливает транзакции, связанные с указанным идентификатором сеанса. Иногда координатор распределенных транзакций Майкрософт (MS DTC) может использоваться. Когда он используется, эту инструкцию также можно применять для завершения потерянных и сомнительных распределенных транзакций.
Соглашения о синтаксисе Transact-SQL
Syntax
Синтаксис для SQL Server, базы данных SQL Azure или управляемого экземпляра SQL Azure:
KILL { session_id [ WITH STATUSONLY ] | UOW [ WITH STATUSONLY | COMMIT | ROLLBACK ] }
[ ; ]
Синтаксис Для Azure Synapse Analytics, системы платформы аналитики (PDW) и Microsoft Fabric:
KILL 'session_id'
[ ; ]
Arguments
session_id
Идентификатор сеанса завершения процесса.
session_id
is a unique int that is assigned to each user connection when the connection is made. Значение идентификатора сеанса остается привязанным к соединению в течение всего времени соединения. По окончании соединения данное целое значение освобождается и может быть присвоено другому соединению.
Следующий запрос может помочь выявить session_id
, который требуется удалить:
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;
UOW
Определяет единицу рабочего идентификатора (UOW) распределенных транзакций.
UOW is a GUID that might be obtained from the request_owner_guid
column of the sys.dm_tran_locks
dynamic management view.
UOW also can be obtained from the error log or through the MS DTC monitor. Дополнительные сведения о наблюдении за распределенными транзакциями см. в руководстве пользователя MS DTC.
Используется KILL <UOW>
для остановки неразрешенных распределенных транзакций. Эти транзакции не связаны с любым идентификатором реального сеанса, но вместо этого связаны искусственно с идентификатором сеанса = -2
. Этот идентификатор сеанса упрощает идентификацию неразрешенных транзакций, запрашивая столбец идентификатора сеанса в sys.dm_tran_locks
или sys.dm_exec_sessions
sys.dm_exec_requests
динамических административных представлениях.
WITH STATUSONLY
Used to generate a progress report for a specified UOW or session_id
that is being rolled back because of an earlier KILL
statement.
KILL WITH STATUSONLY
не завершает или не откатывает идентификатор UOW или сеанса. Команда только отображает текущее состояние отката.
WITH COMMIT
Используется для убийства неразрешенной распределенной транзакции с фиксацией. Only applicable to distributed transactions, you must specify a UOW to use this option. For more information, see distributed transactions.
WITH ROLLBACK
Используется для убийства неразрешенной распределенной транзакции с откатом. Only applicable to distributed transactions, you must specify a UOW to use this option. For more information, see distributed transactions.
Remarks
KILL
обычно используется для завершения процесса, блокирующего другие важные процессы с блокировками.
KILL
также можно использовать для остановки процесса, выполняющего запрос, использующий необходимые системные ресурсы. Системные процессы и процессы, выполняющие расширенные хранимые процедуры, не могут быть прерваны.
Тщательно используйте KILL
, особенно при выполнении критически важных процессов. Существует опасность прерывания собственного процесса. Не следует также прерывать следующие процессы:
AWAITING COMMAND
CHECKPOINT SLEEP
LAZY WRITER
LOCK MONITOR
SIGNAL HANDLER
Используется @@SPID
для отображения значения идентификатора сеанса (SPID) для текущего сеанса.
Чтобы получить отчет о значениях идентификатора активного сеанса, запросите session_id
столбец столбца sys.dm_tran_locks
sys.dm_exec_sessions
и sys.dm_exec_requests
динамические административные представления. Вы также можете просмотреть SPID
столбец, возвращающий системную sp_who
хранимую процедуру. Если откат выполняется для определенного идентификатора сеанса, cmd
столбец в результирующем наборе sp_who
для этого идентификатора сеанса указывает KILLED/ROLLBACK
.
Если какое-либо соединение имеет блокировку на ресурс базы данных и блокирует обработку остальных соединений, идентификаторы сеансов заблокированных соединений появятся в столбце blocking_session_id
представления sys.dm_exec_requests
или в столбце blk
, возвращенном хранимой процедурой sp_who
.
Эту KILL
команду можно использовать для разрешения неуверенных распределенных транзакций. Эти транзакции представляют собой неразрешимые распределенные транзакции, возникшие в результате незапланированных повторных стартов сервера баз данных или координатора MS DTC. Дополнительные сведения о транзакциях без сомнения см. в разделе "Двуфазная фиксация" раздела "Использование помеченных транзакций для последовательного восстановления связанных баз данных".
Использование WITH STATUSONLY
KILL WITH STATUSONLY
создает отчет, если идентификатор сеанса или откат UOW происходит из-за предыдущей KILL <session ID>
или KILL <UOW>
инструкции. Отчет о состоянии отображает процесс выполнения отката (в процентах), а также выводит ожидаемое время до окончания операции (в секундах). В отчете это отображается в следующей форме:
Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds
Если откат идентификатора сеанса или UOW завершается до KILL <session ID> WITH STATUSONLY
KILL <UOW> WITH STATUSONLY
выполнения инструкции, KILL ... WITH STATUSONLY
возвращает следующую ошибку:
"Msg 6120, Level 16, State 1, Line 1"
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."
Эта ошибка также возникает при откате идентификатора сеанса или отката UOW.
Один и тот же отчет о состоянии можно получить, повторяя одну и ту же KILL
инструкцию без использования WITH STATUSONLY
параметра. Однако не рекомендуется повторно выполнять эту инструкцию таким образом. Если повторить KILL <session_id>
инструкцию, новый процесс может остановиться, если откат завершится, и идентификатор сеанса переназначен новой задаче перед запуском новой KILL
инструкции. Предотвратить остановку нового процесса путем указания WITH STATUSONLY
.
Permissions
SQL Server: Requires the ALTER ANY CONNECTION
permission.
ALTER ANY CONNECTION
is included with membership in the sysadmin or processadmin fixed server roles.
SQL Database: Requires the KILL DATABASE CONNECTION
permission. Имя входа субъекта на уровне сервера имеет KILL DATABASE CONNECTION
разрешение.
Хранилище данных Microsoft Fabric: Требуется разрешение элемента монитора или членство в роли администраторов рабочей области.
База данных SQL в Microsoft Fabric:KILL DATABASE CONNECTION
Требуется разрешение в ядре СУБД SQL или разрешение на запись элемента в рабочей области Fabric.
Azure Synapse Analytics: требуются разрешения администратора.
Examples
A. Использование KILL для остановки сеанса
В следующем примере показана остановка сеанса с идентификатором 53
.
KILL 53;
GO
B. Получение отчета о ходе выполнения с помощью идентификатора сеанса KILL WITH STATUSONLY
В данном примере создается отчет о состоянии процесса отката указанного сеанса.
KILL 54;
KILL 54 WITH STATUSONLY;
GO
Вот результирующий набор.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.
C. Использование KILL для остановки потерянных распределенных транзакций
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';