Sql Server Locked by Transaction What The Solution

Di hari ini, hari Jum'at 25 Januari 2019 saya kembali mendapatkan rejeki sebuah masalah yang merupakan sumber ilmu yang sangat indah.
Karena masalah itu adalah sumber uang juga sumber ilmu... :-D

Karena suatu kebutuhan, saya harus merubah type data sebuah field dari VARCHAR(40) ke VARCHAR(200), kemuadian saya coba buka tabel lewat SSMS dan ternyata SSMS tidak bisa membuka daftar tabel di treeview-nya. dan mendapatkan kode error 1222.
Menuut mbah google errror 1222 adalah karena ada timeout, dan timeout itu diebabkan karena ada table yang dikunci (lock) oleh 'transaction'.

Langkah pertama saya coba KILL Connection Database da ternyata GAGAL.

Langkah kedua saya coba kill ID yang IDnya saya dapat dari Query

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
   where   open_transaction_count

ID yang dihasilkan saya KILL #nomor_ID

dan ternyata GAGAL TOTAL.

kemudian saya tanya lagi mbah google dan akhirnya menemukan script ini di sini

USE Master
GO
EXEC sp_who2
GO

Coba lihat kolom BlkBy, nah ID yang saya tandai itulah penyebab Database terkunci.
ID tersebut saya kill (KILL #nomor_ID)

Dan alhamdulillah berhasil ...



Komentar