由于在执行数据库offline的时候,卡住没动,再查看就报952的错误
经查,是因为有未完成的事务或者连接未退出
1. 查看当前的连接
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;
2. 断掉当前的连接
KILL [Session_ID]
3. 查看当前的未完成的事务
select *
from sys.dm_tran_session_transactions
where is_user_transaction=1;
4. 强制停止当前的事务
附录一:
这个错误的重现及说明
https://mssqltrek.com/2011/07/15/database-testdb-is-in-transition-try-the-statement-later-error952/
附录二:
T-SQL杀连接和事务的说明-MSDN
https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/kill-transact-sql