บางครั้งผู้ใช้ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ RDS farm ที่รัน Windows Server โดยใช้ไคลเอนต์ RDP ส่วนตัว (mstsc.exe) พร้อมกับข้อผิดพลาดต่อไปนี้:
The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log on.

ในกรณีนี้ ผู้ดูแล RDS host สามารถเห็นเซสชันผู้ใช้ที่ค้างหลายรายการพร้อมชื่อ (4) แทนที่จะเป็น username และสถานะ Disconnected ในแท็บ Users ของ Task Manager

ปัญหานี้เกิดขึ้นใน Windows Server ทุกเวอร์ชัน: 2008 R2, 2012 R2, 2016 และ 2019
ข้อผิดพลาดอาจปรากฏจากหลายเหตุผล:
- ข้อผิดพลาดในการทำงานของ Remote Desktop Services;
- บั๊กในกระบวนการ csrss.exe;
- ปัญหากับ user profile หรือ profsvc service;
- ขาด RAM หรือพื้นที่ดิสก์บนเซิร์ฟเวอร์ RDSH;
- การตั้งค่า Group Policy ที่ไม่ถูกต้อง
น่าเสียดายที่ไม่มีโซลูชันทางการของ Microsoft ที่สามารถแก้ปัญหาได้อย่างสมบูรณ์ ทั้งที่คุณทำได้คือการกำจัดอาการ
การแก้ไขปเกือบเสมอเกี่ยวข้องกับการ reset เซสชันผู้ใช้ที่มีปัญหาหรือการรีสตาร์ท RDS server แต่ในบางกรณีปัญหายังคงอยู่ มาศึกษาวิธีแก้ไขเริ่มจากวิธีที่ง่ายที่สุด
ตรวจสอบทรัพยากร RDS Server
ตรวจสอบให้แน่ใจว่าคุณมีทรัพยากรเซิร์ฟเวอร์เพียงพอ เนื่องจากปัญหาอาจเกิดจากขาด RAM หรือพื้นที่ดิสก์ ตรวจสอบโหลด RAM และพื้นที่ว่างบนดิสก์ที่ติดตั้งระบบปฏิบัติการ (ต้องมีอย่างน้อย 1GB) นอกจากนี้ ดู event log เพื่อดูว่ามี critical errors ที่เกี่ยวข้องกับ RDS หรือไม่
หากทุกอย่างปกติ ให้ไปขั้นตอนต่อไป
รีเซ็ต Stuck Client Remote Desktop Session บน RDS
ก่อนอื่น ลองค้นหาและ reset เซสชันของผู้ใช้ที่ไม่สามารถล็อกอินเข้าระบบ RDS server ด้วยข้อผิดพลาด "Remote Desktop Service is currently busy" หาผู้ใช้ในแท็บ Users ของ Task Manager และคลิก Log off ในเมนูบริบท ในกรณีส่วนใหญ่เพียงพอที่จะแก้ปัญหา แต่บางครั้งคุณอาจพบหลาย hung sessions ที่มีชื่อ (4) แทน username ใน Task Manager ตามกฎทั่วไป จะมี 4 กระบวนการใน hung RDS user session:
- Client Server Runtime Process (csrss.exe)
- Desktop Windows Manager (dwm.exe)
- Windows Logon Application (winlogon.exe)
- Windows Logon User Interface
เพื่อเริ่มต้น ลอง reset ทุก hung (4) RDS sessions ใน Task Manager ตามที่อธิบายข้างต้น หากไม่ช่วย 最好 reboot เซิร์ฟเวอร์ แต่สิ่งนี้มักไม่เป็นไปได้ เนื่องจากจะส่งผลต่อเซสชันของผู้ใช้อื่นบน RDS host ดังนั้นเราจะพยายามแก้ปัญหาโดยไม่รีบูทโฮสต์:
- รัน command prompt ที่มีสิทธิ์ผู้ดูแลระบบและรันคำสั่ง:
query session
จะแสดงผู้ใช้ทั้งหมดและเซสชันระยะไกลของพวกเขาบน RDS host มี 3 คอลัมน์ที่เราต้องการในเอาต์พุต: SESSIONNAME, USERNAME และ ID หา user (4)และ ID ที่สอดคล้องกัน ในตัวอย่างนี้คือ ID 2 เราต้อง kill กระบวนการcsrss.exeที่ทำงานในเซสชันนี้ แต่เราต้องหามันก่อน; - แสดงรายการกระบวนการที่ทำงานใน session ID ที่คุณได้ก่อนหน้านี้:
query process /id 2
หากกระบวนการ csrss.exe(ตรวจสอบคอลัมน์ IMAGE) และ PID ของมัน ในกรณีของฉัน PID คือ 5140 คุณต้อง kill กระบวนการนี้ - ตรวจสอบใน Task Manager เปิด Task Manager ไปที่แท็บ Details และหา PID และกระบวนการจากขั้นตอนก่อนหน้า
หาก PID ที่คุณต้องการสอดคล้องกับกระบวนการ csrss.exe ให้ kill กระบวนการโดยคลิก End task ในเมนูบริบท หรือป้อนคำสั่งต่อไปนี้ใน command prompt: taskkill /F /PID 5140
ทำซ้ำสำหรับแต่ละ user (4) หากมีบางคน
การรีเซ็ต RDS User Session
หากคุณไม่สามารถ log off ผู้ใช้ที่มีปัญหาใน Task Manager คุณสามารถลอง reset RDS user session จาก command prompt:
- เปิด command prompt เป็น administrator และรันคำสั่ง:
query session
คัดลอก SESSIONNAME ของผู้ใช้ที่มีปัญหา - ป้อน:
reset session <SESSIONNAME>ระบุ session name ที่คุณมีแทน <sessionname> ตามที่แสดงในสกรีนช็อตด้านล่าง:
ทำซ้ำสำหรับแต่ละ problem RDS user session จากนั้นคุณอาจลองล็อกอินและปัญหาควรไม่เกิดขึ้นอีก หากคุณสามารถรีสตาร์ทเซิร์ฟเวอร์ได้ 最好 ทำมัน
ตรวจสอบการตั้งค่า Licensing บน RDS Host ของคุณ
ตรวจสอบให้แน่ใจว่า license server และ license type (CAL Per User/ CAL Per Device) ที่ระบุบน RDS host ของคุณถูกต้อง
ครั้งหนึ่งฉันได้รับข้อผิดพลาด 'The task you are trying to do can't be completed because Remote Desktop Services is currently busy' เมื่อหลังจากติดตั้งบทบาท RDSH ฉันลืมระบุ hostname/IP address ของเซิร์ฟเวอร์ที่มีบทบาท Remote Desktop Licensing ในกรณีนั้น ผู้ใช้ RDP สองคนเชื่อมต่อได้ตามปกติ และคนที่สามเผชิญกับข้อผิดพลาดนี้
คุณสามารถระบุที่อยู่ของเซิร์ฟเวอร์ที่มี RDS licenses:
- ในการตั้งค่า RDS collection: Tasks -> Edit Deployment Properties -> RD Licensing -> Specify a license server;

- ใน GPO: Use the specified Remote Desktop license servers (Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing)

- โดยใช้ PowerShell (ดูบทความ Licensing mode for the Remote Desktop Session Host is not configured)
ลบขีดจำกัดการเชื่อมต่อ RDP ใน GPO
คุณสามารถใช้ Group Policies เพื่อจำกัดจำนวนการเชื่อมต่อ RDS พร้อมกัน (simultaneous) การตั้งค่านโยบายนี้ปิดใช้งานโดยค่าเริ่มต้น
ตรวจสอบว่านโยบายเปิดใช้งานหรือไม่และรับค่าของมันโดยใช้ gpresult
- รันคำสั่งต่อไปนี้ใน command prompt ที่มีสิทธิ์ผู้ดูแลระบบ:
gpresult /H c:\gpresult.html - เปิดไฟล์ gpresult.html ที่ตั้งอยู่ในรากของดิสก์ C เป็นไฟล์ .html ธรรมดา และแนะนำให้เปิดใน Internet Explorer เนื่องจากอาจแสดงไม่ถูกต้องในเบราว์เซอร์อื่นๆ;
- ค้นหาการตั้งค่า GPO ชื่อ Limit number of connections ภายใต้ Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host\Connections หรือพิมพ์ Limit number of connections เพื่อค้นหาในหน้า
หากไม่มีการตั้งค่านโยบายดังกล่าว มันไม่ได้ถูกนำไปใช้และไม่มีข้อจำกัดเกี่ยวกับจำนวนการเชื่อมต่อพร้อมกัน หากนโยบายเปิดใช้งานและตั้งค่าจำนวนการเชื่อมต่อสูงสุด ให้เปลี่ยนค่าตามที่คุณต้องการ คุณสามารถแก้ไข Local Group Policy Editor (gpedit.msc) และหากนโยบายตั้งค่าโดย domain GPO ให้แก้ไขใน gpmc.msc หลังจากทำแล้ว อย่าลืมรันคำสั่ง gpupdate /force เพื่อ refresh และนำการตั้งค่า Group Policy ใหม่ไปใช้ทันที
โซลูชันนอกกล่อง: ทำอย่างไรถ้าทุกอย่างไม่ช่วย
หากคุณมีทรัพยากรเซิร์ฟเวอร์เพียงพอ ไม่เห็นข้อผิดพลาดใน RDP logs การรีเซ็ตเซสชันผู้ใช้ไม่ช่วยด้วยเหตุผลบางอย่าง และไม่สามารถรีสตาร์ท RDSH host ทันที คุณควรลองตัวเลือกต่อไปนี้:
- ตรวจสอบให้แน่ใจว่าโหมด Drain ที่ป้องกันผู้ใช้จากการสร้างการเชื่อมต่อ RDP ใหม่ถูกปิดใช้งาน:
chglogon.exe /QUERYหากคำสั่งคืนค่า 'New user logons are DISABLED, but reconnections to existing sessions are ENABLED,' ปิดโหมด Drain:chglogon.exe /enable
- เอาติ๊ก Persistent bitmap caching ออกในการตั้งค่าการเชื่อมต่อ RDP ของไคลเอนต์
mstsc.exe;
- รีสตาร์ท Remote Desktop Service โดยใช้คำสั่ง:
net stop termserviceและnet start termserviceหรือรีสตาร์ทบริการจากระยะไกลโดยใช้ PowerShell:Get-Service termservice –ComputerName mun-rdsh1 | Restart-Service - Kill ทุกกระบวนการ tstheme.exe;
- แนะนำให้ใช้ latest updates ทั้งหมดสำหรับ Windows version ของคุณ ใช้เครื่องมืออัปเดตมาตรฐาน (หรือโมดูล PowerShell PSWindowsUpdate)