บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL ที่เริ่มการสิ้นสุดด้วยตนเอง


9

สำหรับเดือนที่ผ่านมาหนึ่งในเซิร์ฟเวอร์ของฉันกำลังประสบปัญหากับตัวแทนของเซิร์ฟเวอร์ SQL มันหยุดอัตโนมัติโดยมีข้อผิดพลาดด้านล่างซึ่งเกิดขึ้นแบบสุ่ม:

ไฟล์เอาต์พุตเอเจนต์ Sql
[097] ตรวจพบการรั่วไหลของหน่วยความจำ [204 ไบต์]
ข้อยกเว้น 5 ตรวจพบที่บรรทัด 403 ของไฟล์ e: \ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp SQLServerAgent เริ่มต้นการยกเลิกด้วยตนเอง

ฉัน googled ข้อผิดพลาดนี้ แต่ไม่ได้รับข้อมูลมากนัก ทั้ง SQL Server และ Agent ทำงานด้วยบัญชีโดเมนเดียวกัน อย่างไรก็ตามปัญหานี้เกิดขึ้นกับบริการตัวแทนการเซิร์ฟเวอร์ SQL เท่านั้น

ฉันยังไม่สามารถดูบริการ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL ในตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL ฉันตรวจสอบบันทึกข้อผิดพลาด SQL Server และบันทึกเหตุการณ์ Windows Viewer แต่ไม่เห็นกิจกรรมที่น่าสงสัย

การตั้งค่าหน่วยความจำของฉันถูกกำหนดค่าอย่างถูกต้อง เซิร์ฟเวอร์มี 32GB RAM และ SQL Server ถูกกำหนดให้ใช้หน่วยความจำสูงสุด 26GB

รายละเอียดระบบ:

  • SQL Server 2012 SP2 Std Edition 11.0.5058 64 บิต
  • Windows Server 2008 R2 Ent Edition 64 บิต
  • อุทิศให้กับ SQL Server (ไม่มีแอปอื่นที่ทำงานบนเซิร์ฟเวอร์)
  • เซิร์ฟเวอร์ได้รับการอัพเกรดไม่กี่เดือนที่ผ่านมาจาก SQL Server 2005 EE เป็น 2012 SE
  • เราไม่ได้ใช้กิจกรรมการส่งต่อเซิร์ฟเวอร์

ฉันตรวจสอบฐานข้อมูลmsdbเช่นกัน เรียกใช้ checkdb และดำเนินการให้เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด ฉันต้องการความช่วยเหลือจากคุณในการแก้ไขสองสิ่ง:

  1. เมื่อต้องการแก้ไขการหยุดบริการตัวแทนของเซิร์ฟเวอร์ SQL แบบสุ่ม
  2. ในการเพิ่มบริการตัวแทนของเซิร์ฟเวอร์ SQL ในตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL

เรามีซอฟต์แวร์บุคคลที่สามสำหรับการตรวจสอบดังนั้นเราจะได้รับแจ้งทันทีหากบริการตัวแทนหยุด สำหรับตอนนี้เราเพิ่งเริ่มบริการใหม่ แต่เราต้องการค้นหาสาเหตุที่แท้จริง

ฉันเรียกใช้แบบสอบถามต่อไปนี้ที่แนะนำโดย Sean Gallardy และได้ 95 แถวกลับมา ฉันไม่รู้วิธีตีความผลลัพธ์

select * 
from sys.dm_os_loaded_modules 
where name not like '%microsoft%'

น่าเสียดายที่ฉันไม่สามารถโพสต์ผลลัพธ์ด้วยเหตุผลด้านความปลอดภัย

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


เมื่อตัวแทนถูกฆ่าคุณสามารถเข้าสู่เซิร์ฟเวอร์และตรวจสอบการใช้ไฟล์หน้าได้หรือไม่ มีรายการเชื่อมต่อเกี่ยวกับสิ่งนี้ซึ่งเกิดจากการที่ไฟล์ในหน้าแอปต่าง ๆ หมดลง (รวมถึง HyperBac)
Cody Konior

ฉันจะตรวจสอบว่าเมื่อมันเกิดขึ้นอีกครั้ง
SQLPRODDBA

เมื่อคุณอัปเกรดจาก SQL Server 2005 EE เป็น SQL Server 2012 SE คุณมีการอัปเกรดแล้วหรือยัง หรือว่าคุณติดตั้ง SQL Server ใหม่เป็นงวด? ฉันถามเพราะในช่วงต้นปี 2000 ฉันเจอความล้มเหลวสองสามอย่างด้วยการอัปเกรดแบบแทนที่ที่ได้รับการแก้ไขโดยการลบโฟลเดอร์และติดตั้ง SQL Server ใหม่ในโฟลเดอร์ว่าง (ใช่มันเป็นเรื่องน่ารำคาญ)
RLF

คำตอบ:


1

เนื่องจากคุณเพิ่งอัปเกรดไม่กี่เดือนที่ผ่านมาจาก SQL Server 2005 EE เป็น 2012 SE คุณควรบันทึกและล้างบันทึกเหตุการณ์ของคุณเนื่องจาก SqlAgent อาจมีปัญหาเมื่อเห็น ID บันทึกเหตุการณ์จาก SQL Server รุ่นเก่า ตัวอย่างเช่น Agent อาจมีปัญหาเพราะอ่านเหตุการณ์ที่บันทึกโดย SQL Server บิลด์ก่อนบิลด์ปัจจุบันซึ่งมีเฉพาะข้อมูลที่มีสตริงการแทรกหนึ่งครั้งและเอเจนต์จะพยายามจัดรูปแบบโดยใช้ข้อมูลทรัพยากรล่าสุดที่ต้องการสตริง TWO สิ่งนี้จะนำไปสู่การรั่วไหลของหน่วยความจำสั้น ๆ ก่อนที่จะปิดตัวลงเนื่องจากมีการจัดสรรบัฟเฟอร์สำหรับสตริงที่พยายามพิมพ์เมื่อเกิดความผิดพลาด

สำหรับบริการตัวแทนที่ไม่อยู่ในเครื่องมือจัดการการกำหนดค่ามีความเป็นไปได้หลายอย่าง: https://support.microsoft.com/en-us/kb/941823

ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้ตัวจัดการการกำหนดค่าปี 2012

คุณสามารถลองสร้างที่เก็บ WMI ขึ้นใหม่ได้ที่: https://blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/

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