คำตอบสั้น ๆ: 0x80070021 ขึ้นเมื่อคัดลอกไฟล์ PST ที่ยังถูก Outlook, OneDrive หรือโปรแกรมสำรองล็อกไว้ แก้โดยปิด Outlook ให้สนิท ตรวจ OUTLOOK.EXE ใน Task Manager แล้วคัดลอกใหม่
คู่มือนี้อธิบาย 0x80070021 ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
0x80070021 คือรหัสข้อผิดพลาดของ Windows ที่ขึ้นเมื่อคัดลอก ย้าย หรือสำรองไฟล์ข้อมูล Outlook (.pst หรือ .ost) แล้วทำไม่สำเร็จ ข้อความที่เห็นคือ Error 0x80070021: The process cannot access the file because another process has locked a portion of the file. ใน File Explorer หรือในโปรแกรมสำรองข้อมูล และบางครั้งขึ้นระหว่าง Import/Export ใน Outlook สาเหตุที่พบบ่อยที่สุดคือ Outlook ยังทำงานอยู่เบื้องหลังแม้ปิดหน้าต่างไปแล้ว จึงยังล็อกบางส่วนของไฟล์ไว้ วิธีที่ได้ผลบ่อยที่สุดคือปิด Outlook ให้สนิท ตรวจใน Task Manager ว่าไม่มี OUTLOOK.EXE แล้วจึงคัดลอกไฟล์
คู่มือนี้เขียนสำหรับผู้ใช้ที่กำลังสำรองหรือย้ายไฟล์ PST เช่น ตอนเปลี่ยนเครื่อง และผู้ดูแลไอทีที่เจอ 0x80070021 ในงานสำรองข้อมูลของเครื่องผู้ใช้ เมื่อทำครบ คุณจะหาได้ว่าโปรแกรมไหนล็อกไฟล์ ปลดล็อกได้โดยไม่ทำไฟล์เสีย และย้ายไฟล์ออกจากตำแหน่งที่ทำให้เกิดปัญหาซ้ำ เช่น OneDrive หรือไดรฟ์เครือข่าย
สิ่งที่ต้องเตรียม
- รู้ว่าใช้ Outlook แบบไหน classic Outlook มีเมนู File มุมซ้ายบน ส่วน new Outlook มีสวิตช์ New Outlook มุมขวาบนและไอคอนเฟือง Settings ทั้งสองแบบเปิดไฟล์ PST ได้ จึงต้องปิดทั้งคู่ก่อนคัดลอก
- ตำแหน่งไฟล์จาก classic Outlook: File > Account Settings > Account Settings แท็บ Data Files > Open File Location จดไว้ก่อนปิด Outlook
- สิทธิ์เปิด Task Manager และ Resource Monitor ของเครื่อง (ผู้ใช้ทั่วไปเปิดได้ แต่การปิดโปรแกรมของระบบหรือของผู้ใช้อื่นต้องใช้สิทธิ์ผู้ดูแลเครื่อง)
- พื้นที่ปลายทางที่ใหญ่กว่าขนาดไฟล์ PST เช่น ไดรฟ์ USB หรือโฟลเดอร์บนดิสก์ในเครื่อง
- เวลาที่ไม่มีงานสำรองข้อมูลอัตโนมัติทำงาน เพราะงาน backup ที่อ่านไฟล์อยู่ก็ทำให้เกิด 0x80070021 ได้ ถ้าเป็นเครื่องในองค์กร ให้ถามผู้ดูแลระบบว่างาน backup เริ่มกี่โมง
สาเหตุของ 0x80070021
0x80070021 คือรหัส Windows ERROR_LOCK_VIOLATION (error 33) แปลว่ามีโปรแกรมล็อกช่วงหนึ่งของไฟล์ไว้ Outlook ล็อกไฟล์ PST แบบนี้ตลอดเวลาที่เปิดไฟล์ จึงอ่านไฟล์จากโปรแกรมอื่นไม่ได้ รหัสใกล้เคียงคือ 0x80070020 (The process cannot access the file because it is being used by another process.) ซึ่งแปลว่าไฟล์ถูกเปิดอยู่ทั้งไฟล์ วิธีแก้เหมือนกัน ต้นเหตุที่พบจริงได้แก่
- Outlook ยังปิดไม่สนิท ไฟล์ใหญ่ทำให้ Outlook ใช้เวลาปิดนาน บางครั้ง OUTLOOK.EXE ค้างอยู่หลังหน้าต่างหายไปแล้ว หรือมีโปรแกรมที่เชื่อมกับ Outlook เช่น Skype for Business ทำให้ Outlook ยังรันอยู่
- new Outlook เปิดไฟล์ PST เดียวกันไว้ ถ้าเคยเพิ่มไฟล์ที่ Settings > Files > Outlook Data Files
- ไฟล์อยู่ในโฟลเดอร์ OneDrive Microsoft ระบุว่าการซิงก์ไฟล์ PST ที่เปิดอยู่ไม่รองรับ และไฟล์ใหญ่ทำให้ OneDrive ขึ้น Processing changes หรือ A file is in use
- ไฟล์อยู่บนไดรฟ์เครือข่ายหรือ NAS ซึ่ง Microsoft ไม่รองรับสำหรับการใช้งานต่อเนื่อง ตามเอกสาร Limits to using pst files over LAN and WAN links
- โปรแกรมสำรองข้อมูลหรือ antivirus ที่กำลังอ่านไฟล์อยู่พอดี
ขั้นตอนที่ 1: ปิด Outlook ทุกตัวให้สนิทแล้วคัดลอกใหม่
- ปิด classic Outlook จากหน้าต่าง แล้วปิด new Outlook ด้วยถ้าเปิดอยู่
- รอ 1 ถึง 2 นาที ไฟล์ PST ขนาดหลายสิบ GB ต้องใช้เวลาเขียนข้อมูลที่ค้างลงไฟล์ก่อนปิด
- เปิด Task Manager (Ctrl + Shift + Esc) แท็บ Details ดูว่ายังมี
OUTLOOK.EXEหรือolk.exeหรือไม่ - ถ้าไม่มีแล้ว ให้คัดลอกไฟล์อีกครั้ง
ถ้าคัดลอกผ่าน แสดงว่าแก้ 0x80070021 ได้แล้ว ไม่ต้องทำขั้นต่อไป ถ้า OUTLOOK.EXE ยังค้างเกิน 5 นาที ให้คลิกขวา > End task แต่การบังคับปิดขณะ Outlook ยังเขียนไฟล์อาจทำให้ไฟล์เสีย หลังคัดลอกได้แล้วให้ตรวจไฟล์ด้วย ScanPST ตามคู่มือ ScanPST ทางที่ปลอดภัยกว่าการ End task คือรีสตาร์ตเครื่อง แล้วคัดลอกไฟล์ก่อนเปิด Outlook
ขั้นตอนที่ 2: หาโปรแกรมที่ทำให้เกิด 0x80070021 ด้วย Resource Monitor
ถ้าปิด Outlook หมดแล้วยังขึ้น 0x80070021 ให้หาว่าโปรแกรมไหนถือไฟล์อยู่ แทนการเดาและปิดโปรแกรมไปทีละตัว
- กด Windows + R พิมพ์
resmonแล้วกด Enter - ไปที่แท็บ CPU แล้วขยายส่วน Associated Handles
- พิมพ์ชื่อไฟล์ เช่น
somchai.pstหรือ.pstในช่องค้นหาของส่วนนั้น - ดูคอลัมน์ Image ว่าเป็นโปรแกรมอะไร เช่น OneDrive.exe, SearchProtocolHost.exe หรือโปรแกรมสำรองข้อมูล
ให้ปิดโปรแกรมนั้นจากหน้าต่างของมันเองหรือรอให้งานเสร็จ เช่น รองานสำรองข้อมูลจบ แทนการคลิกขวา End Process ใน Resource Monitor ถ้าเป็นโปรแกรม antivirus อย่าปิดการป้องกัน ให้รอให้สแกนเสร็จหรือให้ผู้ดูแลตั้งเวลาสแกนให้ไม่ชนกับงานสำรอง เมื่อโปรแกรมปล่อยไฟล์แล้ว รายการจะหายจาก Associated Handles ให้คัดลอกไฟล์อีกครั้ง ถ้าไม่ขึ้น 0x80070021 แสดงว่าแก้แล้ว
ขั้นตอนที่ 3: หยุดการซิงก์ของ OneDrive ชั่วคราว
ถ้า Resource Monitor แสดง OneDrive.exe หรือคอลัมน์ Location ของไฟล์ใน Data Files มีคำว่า OneDrive ให้คลิกไอคอนรูปเมฆของ OneDrive ที่มุมขวาล่าง > ไอคอนเฟือง > Pause syncing เลือก 2 hours แล้วคัดลอกไฟล์ใหม่ ถ้าคัดลอกผ่านโดยไม่มี 0x80070021 แปลว่า OneDrive คือตัวล็อก วิธีนี้ปลดล็อกได้เฉพาะครั้งนี้ ถ้าไฟล์ยังอยู่ใน OneDrive และ Outlook เปิดไฟล์ทุกวัน 0x80070021 จะกลับมาอีก ให้ทำขั้นตอนที่ 4 ต่อ
หลังคัดลอกเสร็จ ให้กลับไปที่เมนูเดิมแล้วเลือก Resume syncing เพื่อให้ไฟล์อื่นสำรองต่อตามปกติ