งานที่กำหนดเวลาไว้ใน Windows ล้มเหลวในการทำให้สมบูรณ์ด้วยรหัสข้อผิดพลาด 0xc000013a


11

ฉันใช้ Windows Server 2003 และมีตารางงานที่ล้มเหลว งานถูกตั้งค่าให้เรียกใช้สคริปต์คำสั่งของ Windows (.cmd) เวลา 15.00 น. ในแต่ละวัน สคริปต์รันโปรแกรมที่ดึงข้อมูลบางอย่างจากฐานข้อมูล SQL Server และอัพโหลดข้อมูลนั้นไปยังเซิร์ฟเวอร์ FTP

รหัสข้อผิดพลาดที่แสดงในคอลัมน์ "ผลลัพธ์ล่าสุด" ของโฟลเดอร์งานที่กำหนดเวลาไว้คือ 0xc000013a การค้นหาอย่างรวดเร็วของ Google นำไปสู่หน้าสนับสนุนของ Microsoftที่ระบุ: รหัสข้อผิดพลาด "C" ที่พบบ่อยที่สุดคือ "0xC000013A: แอปพลิเคชันถูกยกเลิกอันเป็นผลมาจาก CTRL + C"

ไม่มีใครลงชื่อเข้าใช้ในเวลาที่งานรันดังนั้นจึงไม่มีใครอยู่รอบ ๆ เพื่อกด CTRL + C ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งที่ถูกกล่าวถึงในเอกสารของ Microsoft

ฉันได้ตรวจสอบสิ่งที่เป็นพื้นฐานแล้ว - งานที่กำหนดเวลาไว้ถูกเปิดใช้งานกำหนดให้ทำงานทุกวันและชี้ไปที่ไฟล์ที่มีอยู่ในตำแหน่งที่ถูกต้อง ที่น่าสนใจเมื่อฉันเรียกใช้งานนี้ด้วยตนเอง (โดยการเรียกใช้สคริปต์. cmd จากบรรทัดคำสั่งหรือโดยการคลิกขวาที่งานและคลิก "Run") งานจะเสร็จสมบูรณ์

รหัสข้อผิดพลาดนี้หมายถึงอะไรและฉันจะทำให้งานนี้ทำงานได้อย่างไรเมื่อฉันไม่ได้อยู่ที่นั่นเพื่อบังคับ


ลองเพิ่มรหัสออกในสคริปต์สิ้นสุดด้วยตัวเอง (เช่นexit 0) ถ้ามันยังคงล้มเหลวมันก็ล้มเหลวด้วยตัวเอง ถ้าไม่ใช่มันเป็นเพียงรหัสทางออกปลอมที่ตีความโดยตัวกำหนดตารางเวลางาน
bjoster

คำตอบ:


6

การแก้ไขปัญหาสคริปต์ที่กำหนดเวลา:

  1. หากคุณยังไม่ได้ตรวจสอบการจัดตารางงาน log file ใน GUI ภายใต้ขั้นสูง > ดูล็อก ค้นหาไฟล์ " ***" เพื่อค้นหารายการล่าสุดและคุณอาจเห็นข้อมูลข้อผิดพลาดเพิ่มเติมเล็กน้อย

  2. กำหนดล็อกไฟล์เพื่อดักจับเอาต์พุตและส่งทั้งข้อผิดพลาดมาตรฐานและข้อผิดพลาดมาตรฐานที่นั่น เปลี่ยนecho OFFเป็นecho ONเพื่อให้แน่ใจว่าคุณไม่ได้ใช้ข้อความผิดพลาด
    ตัวอย่างเช่นถ้าสคริปต์ของคุณถูกเรียกงานftp.data.cmdของคุณอาจมีลักษณะเช่นนี้

    cmd /c ftp.data.cmd >> ftp.data.log 2>&1

  3. สคริปต์หยุดทำงานหรือไม่ บางทีตัวกำหนดเวลางานกำลังฆ่าสคริปต์ (ดังนั้นรหัสข้อผิดพลาด CTRL + C) หลังจากระยะเวลาที่กำหนด เพิ่มสิ่งเหล่านี้ที่จุดยุทธศาสตร์ในสคริปท์ของคุณ

    echo %DATE% %TIME%

  4. คุณแน่ใจหรือว่าบัญชีที่เรียกใช้สคริปต์มีสิทธิ์ / เข้าถึงทุกอย่างในสคริปต์

  5. หากคุณไม่สามารถมีความสุขได้ให้รันคำสั่งนี้และโพสต์ผลลัพธ์ที่นี่บางทีเราสามารถเริ่มต้นด้วยการกำหนด

    schtasks /query /v /fo LIST /s YOURSERVER


4

ฉันไม่สามารถตอบคำถามได้โดยตรงเพราะไม่รู้ว่าข้อความแสดงข้อผิดพลาดหมายถึงอะไร (และดังนั้นจึงควรแก้ไข) แต่ถ้าฉันพยายามแก้ไขปัญหาฉันจะเพิ่มการเขียนลงในล็อกไฟล์ที่ คะแนนเชิงกลยุทธ์ในสคริปต์และหลังจากเวลาที่กำหนดดูว่าด่านสุดท้ายที่จะทำงานคืออะไร

ความสงสัยของฉันคือว่ามีบางสิ่งที่ล้มเหลวเนื่องจากข้อมูลประจำตัวที่สคริปต์กำลังทำงานอยู่หรือบางสิ่งในสคริปต์ต้องการผู้ใช้ที่เข้าสู่ระบบ การ จำกัด สถานที่ในสิ่งสคริปต์ล้มเหลวอาจช่วยให้คุณค้นหารหัส "ละเมิด"


2

ฉันรู้ว่านี่เป็นการโพสต์เก่า แต่พวกเขามีประโยชน์มากเมื่อค้นหาวิธีแก้ไขและบางทีสิ่งที่ฉันพบก็มีประโยชน์เช่นกัน ฉันใช้ WinSCP บน Windows Server 2003 เพื่ออัปโหลดไปยังเซิร์ฟเวอร์ ftp และได้รับข้อความแสดงข้อผิดพลาดเดียวกันและไฟล์ SchedLgU.txt ชี้ไปที่เวลาไม่เพียงพอในส่วน "หยุดงานถ้าทำเพื่อ:" แม้ว่าฉันจะให้งาน เวลาในการอัปโหลดมากมาย

มองใน Task Manager ฉันเห็นว่า WinSCP.exe ไม่ได้ล้างออกและฉันมีกระบวนการมากมายในรายการดังนั้นฉันจึงสร้างแบตช์ไฟล์ (taskkill / f / im winscp.exe) เพื่อฆ่ากระบวนการที่เปิดอยู่และฉัน มีไฟล์ชุดนั้นทำงานก่อน WinSCP และมันทำงานได้ดีในขณะนี้


2

ฉันวิ่งเข้ามาในวันนี้บนเซิร์ฟเวอร์ระยะไกลและทางออกคือการเปลี่ยนการตั้งค่าการทำงานจาก "Run เฉพาะเมื่อผู้ใช้เข้าสู่ระบบ" เป็น "Run ไม่ว่าผู้ใช้เข้าสู่ระบบหรือไม่"

ด้วย "เรียกใช้เฉพาะเมื่อผู้ใช้เข้าสู่ระบบ" งานจะเปิดหน้าต่างคำสั่งที่ถูกปิดเมื่อเซสชันเดสก์ท็อประยะไกลของฉันหมดเวลา ด้วย "เรียกใช้ว่าผู้ใช้เข้าสู่ระบบหรือไม่" ไม่มีหน้าต่างปรากฏขึ้นในขณะที่ทำงานดังนั้นการดำเนินการจะไม่หยุดเมื่อเซสชันเดสก์ท็อประยะไกลของฉันสิ้นสุดลง


1

คล้ายกับคำตอบของ cori ฉันขอแนะนำให้คุณตรวจสอบว่างานที่กำหนดเวลาไว้ถูกตั้งค่าให้ทำงานเนื่องจากฉันได้เห็นข้อผิดพลาดนี้เกิดขึ้นเมื่อบัญชีผู้ใช้ที่ใช้งานนั้นไม่มีสิทธิ์เหมือนกับผู้ใช้ที่ล็อกอิน


1

หากดำเนินการมาก่อนอาจมีเงื่อนไขเช่นการขาดหายไปของเครือข่ายหรือปัญหาในโฮสต์อื่นสามารถอธิบายความล้มเหลวได้


1

ฉันมีข้อผิดพลาดเดียวกันและเป็นเพราะไฟล์แบตช์ที่ฉันเรียกใช้อยู่นั้นแจ้งให้ไฟล์บางไฟล์ลบด้วยคำสั่ง DEL เนื่องจากไม่มีผู้ใช้ที่จะตอบ Y / N เพื่อกระบวนการแบทช์งานที่กำหนดเวลาจะถูกยกเลิก ต่อไปนี้เป็นข้อความที่ฉันพบในบันทึกการจัดตารางงานของฉัน: "งานถูกยกเลิกการกระทำนี้เริ่มต้นโดยผู้ดูแลระบบหรือโดยบริการ Task Scheduler (เพราะตัวอย่างเช่นขณะนี้คอมพิวเตอร์ไม่ได้ใช้งาน)" คำแนะนำของฉันคือการทำงานด้วยตนเองจากพรอมต์คำสั่งเพื่อดูว่ามันจะหยุดหรือพร้อมท์สำหรับการโต้ตอบของผู้ใช้แก้ไขให้ถูกต้องและงานของคุณจะทำงานได้ดี


1

หากคุณพยายามรันโปรแกรมภายใต้ Task Scheduler control System.Environment.CurrentDirectory จะส่งคืน C: \ Windows \ System32 ไม่ใช่ตำแหน่งที่ปฏิบัติการของคุณอยู่ ข้อผิดพลาดนี้อาจเป็นข้อผิดพลาดที่ไม่พบไฟล์; ฉันพยายามเข้าสู่ไดเรกทอรีย่อยและไม่มีอยู่ในแผนผัง System32


0

ที่สคริปต์ของฉันนี้ชัดเจน มันเกิดขึ้นเพราะฉันมี "หยุด" ในตอนท้ายของแบทช์ไฟล์และงานที่กำหนดไว้จะถูก จำกัด ไว้ที่ 20 นาที เมื่อผู้ใช้อยู่คุณสามารถเห็นการไหลของงาน เมื่อไฟล์แบตช์ไม่ถูกยกเลิกโดยงานที่กำหนดเวลาไว้หลังจาก 20 นาที นี่เป็นสาเหตุที่ 0xc000013a และมันก็โอเค


0

ฉันมีปัญหาเดียวกันและแก้ไขได้โดยเปลี่ยนทริกเกอร์จาก "เมื่อเริ่มต้นระบบ" เป็น "เข้าสู่ระบบ"


0

มีปัญหาเดียวกัน .. ได้รับการแก้ไขโดยการเล่นกับผู้ใช้ที่ลงทะเบียนเพื่อเรียกใช้งานที่กำหนดไว้ ในที่สุดการเปลี่ยนโดเมนคือคำตอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.