Ada kalanya kita akan menghadapi issue pada sebuah SQL Transaction yang tidak berhasil di commit atau di rollback
sehingga terkadang terjadi Time out pada aplikasi kita. Dengan 3 cara simpel ini kita dapat menemukan dan mematikan SQL Transaction
1. Pastikan anda login menggunakan user administrator
2. Jalan perintah berikut untuk menampilkan Transaction yang ke lock
DBCC Opentran
3. Selanjutnya kita tinggal mematikannya dengan query berikut
KILL [SPID]
Note : kita juga bisa menggunakan perintah berikut untuk menemukan Transaction lainnya.
--============================================ --View Locking in Current Database --Author: Timothy Ford --http://thesqlagentman.com --============================================ SELECT DTL.resource_type, CASE WHEN DTL.resource_type IN ('DATABASE', 'FILE', 'METADATA') THEN DTL.resource_type WHEN DTL.resource_type = 'OBJECT' THEN OBJECT_NAME(DTL.resource_associated_entity_id, SP.[dbid]) WHEN DTL.resource_type IN ('KEY', 'PAGE', 'RID') THEN ( SELECT OBJECT_NAME([object_id]) FROM sys.partitions WHERE sys.partitions.hobt_id = DTL.resource_associated_entity_id ) ELSE 'Unidentified' END AS requested_object_name, DTL.request_mode, DTL.request_status, DEST.TEXT, SP.spid, SP.blocked, SP.status, SP.loginame FROM sys.dm_tran_locks DTL INNER JOIN sys.sysprocesses SP ON DTL.request_session_id = SP.spid --INNER JOIN sys.[dm_exec_requests] AS SDER ON SP.[spid] = [SDER].[session_id] CROSS APPLY sys.dm_exec_sql_text(SP.sql_handle) AS DEST WHERE SP.dbid = DB_ID() AND DTL.[resource_type] <> 'DATABASE' ORDER BY DTL.[request_session_id];
Sumber dan Refrensi
http://dotnetlearners.com/blogs/ms-sql-query-to-find-and-remove-uncommitted-or-open-transactions
https://www.mssqltips.com/sqlservertip/1968/understanding-sql-server-locking/