Found this MSSQL query on StackOverflow for troubleshooting locks or not being able to access a database being taken offline.. posting for self-reference:
SELECT DB_NAME(l.resource_database_id) DB, l.resource_type, l.request_mode, l.request_status, l.request_session_id, r.command, r.status, r.blocking_session_id, r.wait_type, r.wait_time, r.wait_resource, request_sql_text = st.text, s.program_name, most_recent_sql_text = stc.text FROM sys.dm_tran_locks l LEFT JOIN sys.dm_exec_requests r ON l.request_session_id = r.session_id LEFT JOIN sys.dm_exec_sessions s ON l.request_session_id = s.session_id LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st OUTER APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) stc --WHERE l.resource_database_id = DB_ID('[Database Name]') ORDER BY request_session_id;
Some additional helpful links:
Lock Modes
Wait Types; Additional wait Type Info
Locks System Table Info
Also, connection by session:
SELECT * FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = [SESSION ID]