คอมพิวเตอร์ไคลเอนต์ไม่รายงานกลับไปยังเซิร์ฟเวอร์บริการการปรับปรุงซอฟต์แวร์ของ Windows (WSUS)


อาการ


คอมพิวเตอร์ไคลเอนต์ไม่รายงานกลับไปยังเซิร์ฟเวอร์ของ Microsoft Windows ซอฟต์แวร์ Update Services (WSUS) นอกจากนี้ อาจเกิดอาการต่าง ๆ ต่อไปนี้:
  • ข้อความแสดงข้อผิดพลาดต่อไปนี้ถูกบันทึกไว้ในล็อกไฟล์ Windowsupdate.log ในคอมพิวเตอร์ไคลเอนต์:
    คำเตือน: ไม่สามารถอัปโหลดเหตุการณ์ไปยังเซิร์ฟเวอร์กับ hr = 80244008
  • ข้อผิดพลาดการหมดเวลาของ Microsoft SQL Server จะแสดงในคอนโซลการดูแลระบบบนเซิร์ฟเวอร์ WSUS
  • แฟ้ม SoftwareDistribution.log ที่อยู่ในโฟลเดอร์ %programfiles%\Microsoft Services\LogFiles การปรับปรุงของ Windows ประกอบด้วยข้อความที่คล้ายกับต่อไปนี้:
    <DATE>
    <TIME>
    ข้อผิดพลาด UTC w3wp.130DBConnection.LogSqlExceptionDBLAYER: ข้อผิดพลาด [0]: ตัวให้บริการข้อมูล SqlClient .Net แหล่ง เซิร์ฟเวอร์ OPC-โฆษณา-WSUS1N\WSUS หมายเลข -2 ชั้น 10, 0, ConnectionRead กระบวนงานของรัฐ (WrapperRead())
    LineNumber 0: หมดเวลา การหมดเวลาของรอบระยะเวลาที่ผ่านไปก่อนที่จะดำเนินการเสร็จสมบูรณ์ของการดำเนินงาน หรือเซิร์ฟเวอร์ไม่ตอบสนอง

สาเหตุ


ปัญหานี้เกิดขึ้นถ้าจำนวนของเหตุการณ์ที่รายงานในตาราง tbEventInstance เกิน 1 ล้านแถว

เซิร์ฟเวอร์ WSUS ที่กำลังใช้ฮาร์ดแวร์แนะนำสามารถสนับสนุนไคลเอนต์ 15,000 จำนวน โดยใช้วงจรการตรวจหารายการเริ่มต้นของชั่วโมง 22 จำนวนของรายงานเหตุการณ์ที่ถูกเพิ่มไปยังตาราง tbEventInstance ขึ้นอยู่ กับจำนวนของไคลเอนต์ และ บนความถี่ที่ถูกตั้งค่าสำหรับแต่ละรอบการตรวจหา การลบแถวจากตาราง tbEventInstance อัตโนมัติเริ่มทำงานเมื่อไคลเอนต์พยายามที่จะส่งรายงาน มีการเริ่มต้นกระบวนการลบอัตโนมัติก็ต่อเมื่อเหตุการณ์รายงานในตาราง tbEventInstance เกิน 1 ล้านแถว

กระบวนการลบอัตโนมัติทำงานช้ามาก และบล็อกคอมพิวเตอร์ไคลเอนต์จากการรายงานกลับไปยังเซิร์ฟเวอร์ WSUS โดยค่าเริ่มต้น WSUS ถูกกำหนดค่าการลบเหตุการณ์ที่เก่ากว่าวันที่ 15 บนเวิร์กสเตชัน และที่มีอายุมากกว่า 90 วันบนเซิร์ฟเวอร์ WSUS ลบเหตุการณ์เก่าที่อัตราของเหตุการณ์ 1000 ทุก ๆ 12 ชั่วโมง

สำหรับข้อมูลเกี่ยวกับวิธีการตรวจสอบว่า ตาราง tbEventInstance เกิน 1 ล้านแถว ดูส่วน "ข้อมูลเพิ่มเติม"

การแก้ปัญหา


ข้อมูลโปรแกรมแก้ไขด่วน

มีโปรแกรมแก้ไขด่วนที่รองรับพร้อมให้บริการจาก Microsoft อย่างไรก็ตาม โปรแกรมแก้ไขด่วนนี้มุ่งหวังเพื่อการแก้ไขเฉพาะปัญหาที่อธิบายไว้ในบทความนี้ ใช้ hotfix นี้เฉพาะกับระบบต่าง ๆ ที่พบปัญหานี้

หากโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด คุณจะเห็นส่วน "มีโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด" ที่ด้านบนของบทความฐานข้อมูลองค์ความรู้นี้ หากส่วนนี้ไม่ปรากฏขึ้น ส่งคำขอถึงฝ่ายบริการและการสนับสนุนลูกค้าของ Microsoft และวิธีการขอรับโปรแกรมแก้ไขด่วน

หมายเหตุ ถ้ามีปัญหาอื่น ๆ เกิดขึ้น หรือถ้าจำเป็นต้องแก้ไขปัญหาใด ๆ คุณอาจต้องสร้างคำขอรับบริการแยกต่างหาก จะมีค่าใช้จ่ายในการสนับสนุนปกติกับคำถามเพิ่มเติมและเรื่องอื่น ๆ ที่ไม่มีสิทธิได้รับโปรแกรมแก้ไขด่วนเฉพาะนี้ สำหรับรายชื่อทั้งหมด ของหมายเลขโทรศัพท์ของฝ่ายบริการลูกค้าของ Microsoft และการสนับสนุน หรือ เพื่อสร้างการร้องขอบริการแยกต่างหาก แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:หมายเหตุ แบบฟอร์ม "มีโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด" แสดงภาษาที่โปรแกรมแก้ไขด่วนพร้อมใช้งาน ถ้าคุณไม่เห็นภาษาของคุณ อาจเป็น เพราะไม่มีโปรแกรมแก้ไขด่วนพร้อมใช้งานสำหรับภาษานั้น

ข้อกำหนดเบื้องต้น

ไม่มีข้อกำหนดเบื้องต้นจำเป็น

ข้อกำหนดการรีสตาร์ท

คุณไม่ต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนนี้

ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนนี้ไม่ได้แทนโปรแกรมแก้ไขด่วนอื่น ๆ

ข้อมูลแฟ้ม

เวอร์ชันภาษาอังกฤษของโปรแกรมแก้ไขด่วนนี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่านี้) ซึ่งแสดงรายการไว้ในตารางต่อไปนี้ วันที่และเวลาสำหรับแฟ้มเหล่านี้จะแสดงรายการไว้ในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ระบบจะแปลงข้อมูลนี้เป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้แท็บ โซนเวลา ในรายการ วันที่และเวลา ในแผงควบคุม
ชื่อแฟ้มรุ่นของแฟ้มขนาดของแฟ้มวันที่เวลาแพลตฟอร์ม
Eventinstancesfix.dllไม่มีข้อมูล41,27207-Nov-200511:36x86
Eventinstancesfix.sqlไม่มีข้อมูล14,44201-Nov-200510:42ไม่มีข้อมูล
Runeventinstancesfix.vbsไม่มีข้อมูล1,43308-Nov-200512:16ไม่มีข้อมูล

วิธีแก้ปัญหา


เมื่อต้องการหลีกเลี่ยงปัญหานี้ เปลี่ยนรอบการตรวจหารายการเป็นค่าที่อยู่ในช่วงที่อนุญาต โดยการใช้ Group Policy คุณสามารถจัดการเวลาระหว่างแต่ละรอบการตรวจหารายการจาก 1 ชั่วโมงเป็นชั่วโมง 22 ตัวอย่างเช่น ถ้าคุณเปลี่ยนความถี่ในการตรวจหาวงจรจากค่าเริ่มต้นชั่วโมง 22 ถึง 11 ชั่วโมง หมายเลขของไคลเอ็นต์ที่เซิร์ฟเวอร์ WSUS สามารถสนับสนุนจะลดลงเป็น 7,500 ไคลเอนต์

หากคอมพิวเตอร์ไคลเอนต์ไม่รายงานกลับไปยังเซิร์ฟเวอร์ WSUS หลังจากที่คุณเปลี่ยนแปลงความถี่ของรอบการตรวจหารายการ คุณต้องลบเหตุการณ์ปัจจุบันทั้งหมดจากตาราง tbEventInstance เมื่อต้องการทำเช่นนี้ เรียกใช้คำสั่งต่อไปนี้ในตัววิเคราะห์คำถาม SQL:
ตัดทอนตาราง dbo.tbEventInstance
นอกจากนี้ คุณสามารถหยุดกระบวนการลบอัตโนมัติ และเพิ่มความถี่ของกระบวนการลบ หลังจากที่คุณเพิ่ม ความถี่ของกระบวนการลบ WSUS ลบแถวในอีก แต่ยังคงรักษาขนาดของตาราง tbEventInstance

เมื่อต้อง การหยุดกระบวนการลบอัตโนมัติ และความถี่ของกระบวนการลบการตั้งค่าเป็น 1 ชั่วโมง เรียกใช้คำสั่งต่อไปนี้ในตัววิเคราะห์คำถาม SQL:
อัพเด AutoPurgeDetectionPeriod การตั้งค่า dbo.tbConfigurationB = 1
คำสั่งนี้รันกระบวนการลบทุกชั่วโมง หลังจากที่คุณเรียกใช้คำสั่งนี้ WSUS ลบเหตุการณ์ 24,000 ต่อวันที่อัตราของเหตุการณ์ 1000 ต่อชั่วโมง นี่คือความถี่สูงสุดที่สามารถกำหนดให้กับกระบวนการลบ

ในการคำนวณความถี่ในการลบอัตโนมัติที่ถูกต้องและความถี่ของรอบการตรวจหารายการที่ถูกต้อง คุณต้องทราบจำนวนของไคลเอนต์ WSUS

ใช้สูตรต่อไปนี้ในการคำนวณความถี่ต่ำสุดสำหรับการลบกระบวนการและความถี่ของรอบการตรวจหา:
ความถี่ในการประมวลผลการลบต่ำสุด: (24/DF) x ส
ความถี่ของรอบการตรวจหา: (ส/PF) x 24
หมายเหตุ DF คือ ความถี่ของรอบการตรวจหารายการ แล้วปิดคือ หมายเลขของไคลเอนต์ WSUS และ PF คือ ความถี่ในการล้างข้อมูลต่ำสุด

ตัวอย่างเช่น ถ้ามีไคลเอนต์ WSUS 4000 และ ถ้าคุณตั้งค่าความถี่ของรอบการตรวจหารายการ 8 รอบต่อวัน ประมาณ 32000 สามารถบันทึกเหตุการณ์ไปยังตาราง tbEventInstance จำนวนสูงสุดของเหตุการณ์ที่คุณสามารถเอาออกได้ โดยการลบขั้นตอนสำหรับแต่ละวัน เป็นเหตุการณ์ 24,000 เมื่อคุณตั้งค่าความถี่ในการลบเป็น 1 ชั่วโมง ดังนั้น คุณสามารถลดความถี่ของรอบการตรวจสอบเพื่อให้จำนวนของเหตุการณ์ที่สร้างขึ้น โดยไคลเอนต์จะน้อยกว่า 24,000

สถานะ


Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"

ข้อมูลเพิ่มเติม


วิธีการตรวจสอบว่า ตาราง tbEventInstance เกิน 1 ล้านแถว

  1. เริ่มตัววิเคราะห์คำถาม SQL และจากนั้น เชื่อมต่อกับเซิร์ฟเวอร์ภายใน
  2. ในรายการฐานข้อมูลคลิกSUSDB
  3. วางแบบสอบถาม SQL ต่อไปนี้ในหน้าต่างแบบสอบถาม:
    select count(*) from tbEventInstance
  4. คลิกดำเนินการแบบสอบถามเพื่อเรียกใช้แบบสอบถาม
ถ้าคุณกำลังเรียกใช้ Microsoft SQL Server Desktop Engine (Windows) (WMSDE), คุณสามารถใช้คำสั่งosqlเพื่อตรวจสอบว่า ตารางtbEventInstanceเกิน 1 ล้านแถว เมื่อต้องการทำเช่นนี้ ให้พิมพ์คำสั่งต่อไปนี้ที่พร้อมท์คำสั่ง และจากนั้น กด ENTER:
"%programfiles%\Update Services\tools\osql\osql.exe" -S %COMPUTERNAME%\WSUS -E -dSUSDB -Q"SELECT COUNT(*) FROM dbo.tbEventInstance"
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
824684คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์ของ Microsoft