Pokud chceme odblokovat lock-nutou databázi na Microsoft SQL Serveru (například pokud chceme přejmenovat databázi, provést obnovu databáze, výmaz databáze…), lze to udělat následujícími způsoby.
První možností je použít tento kód:
SELECT DISTINCT name AS database_name, session_id, host_name, login_time, login_name, reads, writes FROM sys.dm_exec_sessions LEFT OUTER JOIN sys.dm_tran_locks ON sys.dm_exec_sessions.session_id = sys.dm_tran_locks.request_session_id INNER JOIN sys.databases ON sys.dm_tran_locks.resource_database_id = sys.databases.database_id WHERE name ='NazevMeDatabaze' ORDER BY name
Následně se nám objeví, kdo má nad databází zámek:
Pak lze použít například „KILL 68„, čímž zámek uvolníme. Výhodou je, že vidíme, kdo má lock a lze vše ručně řídit. Nevýhodou je, že mohou přibýt další zámky před operací, kterou chceme vykonat.
Další možností je použít tento kód:
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE --do you stuff here ALTER DATABASE YourDatabase SET MULTI_USER
Zde je určitou nevýhodou to, že nám zůstanou na databázi naše vlastní zámky a také to, že můžeme zapomenout vrátit databázi do multi-user režimu. Akce provádíme v místě označeném „do you stuff here“.