首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 單用戶模式導致無法連線?一鍵殺進程+恢復多用戶模式腳本

     編輯:關於SqlServer

問題現象

資料庫被設為 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

原理說明

  1. sys.sysprocesses 獲取指定資料庫所有會話 SPID
  2. 動態拼接 KILL spid 批量終止
  3. ALTER DATABASE ... SET MULTI_USER 恢復正常多用戶模式

⚠️ 注意事項

  • 執行前確認無關鍵業務正在該庫運作,KILL 會回滾未提交事務
  • 若資料庫名含特殊字元,請用 QUOTENAME 或方括號包裹
  • 生產環境建議先 SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('...') 核對 SPID

延伸:如何進入單用戶模式(反向操作)

ALTER DATABASE [DbName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- WITH ROLLBACK IMMEDIATE 會強制斷開現有連線並回滾
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved