Usted primero debe averiguar lo que estaba haciendo, de donde vino, y en su caso por cuánto tiempo más se podría esperar para funcionar:
SELECT
r.[session_id],
c.[client_net_address],
s.[host_name],
c.[connect_time],
[request_start_time] = s.[last_request_start_time],
[current_time] = CURRENT_TIMESTAMP,
r.[percent_complete],
[estimated_finish_time] = DATEADD
(
MILLISECOND,
r.[estimated_completion_time],
CURRENT_TIMESTAMP
),
current_command = SUBSTRING
(
t.[text],
r.[statement_start_offset]/2,
COALESCE(NULLIF(r.[statement_end_offset], -1)/2, 2147483647)
),
module = COALESCE(QUOTENAME(OBJECT_SCHEMA_NAME(t.[objectid], t.[dbid]))
+ '.' + QUOTENAME(OBJECT_NAME(t.[objectid], t.[dbid])), '<ad hoc>'),
[status] = UPPER(s.[status])
FROM
sys.dm_exec_connections AS c
INNER JOIN
sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
LEFT OUTER JOIN
sys.dm_exec_requests AS r
ON r.[session_id] = s.[session_id]
OUTER APPLY
sys.dm_exec_sql_text(r.[sql_handle]) AS t
WHERE
c.session_id = 54;
Si está seguro de que se puede romper esta conexión puede utilizar:
KILL 54;
Sólo ten en cuenta que dependiendo de lo que estaba haciendo la sesión podría dejar los datos y/o la aplicación que llama en un estado extraño.
Otra manera fácil de ver todas las transacciones abiertas en un servidor es presionando 'CTRL + 1' en la ventana de consulta. Muestra todas las transacciones actuales. –
@ SimonDugré Este atajo se puede cambiar en las opciones, si alguien cambió esto, no funcionará como se esperaba. En su lugar, podemos ejecutar el procedimiento almacenado 'sp_who', que en realidad recibe una llamada cuando presiona ctrl + 1. Gracias –
@SibeeshVenu, tienes razón. Buena llamada. –