資料庫被設為 SINGLE_USER 模式後,僅允許一個連線。若該連線被佔用(甚至是殘留會話),其他所有連線嘗試均會報錯:Database 'xxx' is already open and can only have one user at a time。
USE master;
GO
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'KILL ' + CAST(spid AS NVARCHAR(10)) + N'; '
FROM sys.sysprocesses
WHERE dbid = DB_ID(N'你的資料庫名稱'); -- ★ 修改此處
EXEC (@sql);
ALTER DATABASE [你的資料庫名稱] SET MULTI_USER;
GO
sys.sysprocesses 獲取指定資料庫所有會話 SPIDKILL spid 批量終止ALTER DATABASE ... SET MULTI_USER 恢復正常多用戶模式KILL 會回滾未提交事務QUOTENAME 或方括號包裹SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('...') 核對 SPIDALTER DATABASE [DbName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- WITH ROLLBACK IMMEDIATE 會強制斷開現有連線並回滾