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

SQL Server 透過 xp_cmdshell 執行 cmd 指令登出遠端桌面使用者

     編輯:關於SqlServer

應用場景

遠端桌面提示「超過最大連線數」無法登入,且無法透過實體主控台操作時,可利用已連線的 SQL Server 執行 xp_cmdshell 強制登出殭屍 Session。

前置條件

  • 執行個體已啟用 xp_cmdshell (EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;)。
  • 登入帳號具備 sysadmin 固定伺服器角色 (預設僅 sysadmin 可執行)。

操作步驟

  1. 連線 SQL Server (SSMS 或 sqlcmd)。
  2. 查詢目前登入使用者:
    EXEC xp_cmdshell 'quser';
    回傳結果包含 Session ID、使用者名、狀態、閒置時間等。
  3. 針對目標 Session ID 執行登出:
    EXEC xp_cmdshell 'logoff 1';  -- 將 1 替換為實際 Session ID

完整範例

-- 1. 查看所有 Session
EXEC xp_cmdshell 'quser';
-- 輸出範例:
--  USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
--  admin                 rdp-tcp#0           1  Active      .  2024/1/12 08:00
--  user1                 rdp-tcp#1           2  Disc       2:00  2024/1/12 07:30

-- 2. 強制登出 ID=2 的殭屍 Session
EXEC xp_cmdshell 'logoff 2';

安全性提醒

  • xp_cmdshell 權限極高,嚴禁對低權限帳號開放。
  • 生產環境建議:平時關閉 xp_cmdshell,緊急時由 DBA 臨時開啟、用畢即關。
  • 或改用 Remote Desktop Services Manager (mstsc /admin)、PowerShell Invoke-Command 等更受控方式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved