รับเอาต์พุตโดยละเอียดของงาน SQL Agent


16

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

ในประวัติงานมันระบุงานล้มเหลว ผู้ใช้งานถูกเรียกใช้โดย foo \ bar ขั้นตอนสุดท้ายในการรันคือขั้นตอนที่ 1 (สร้างดัชนีใหม่)

ในหน้าต่างรายละเอียดมีหลายข้อความในแบบฟอร์มต่อไปนี้:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

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


1
ฉันคิดว่า @kin ทำงานได้ดีในการตอบคำถามเริ่มต้นของคุณ แต่ในความเห็นของฉันนี่เป็นปัญหาการดีบักมากกว่า หากคุณรู้ว่าดัชนีล้มเหลวฉันจะพยายามระบุสาเหตุที่ดัชนีเฉพาะนั้นล้มเหลว คุณเห็นรหัส sql ที่ใช้หรือไม่ มันอยู่ใน proc ที่เก็บไว้? คุณสามารถทำหลายสิ่งเพื่อ จำกัด ขอบเขตให้แคบลงได้ สร้างงานที่มีเฉพาะดัชนีนั้น รันการติดตาม sql ในขณะที่งานนั้นกำลังทำงานอยู่ จับ sql ที่ใช้แล้วพยายามทำให้เกิดปัญหาอีกครั้ง
Sir Swears-a-lot

คำตอบ:


18

มีวิธีใดที่จะแยกข้อความทั้งหมดของข้อความเหล่านี้ออกหรือไม่

คุณสามารถทำได้ใน 2 วิธี - ไปที่ขั้นตอนงานและเลือกแท็บขั้นสูง:

ส่งออกไปยังไฟล์ (<== วิธีที่ฉันต้องการ)

ป้อนคำอธิบายรูปภาพที่นี่

ข "เข้าสู่ระบบตาราง" และ "รวมขั้นตอนการส่งออกในประวัติ" (<== คุณจำเป็นต้องตัดแต่งmsdb..sysjobhistoryในระยะยาวเนื่องจากข้อความจะถูกเก็บไว้nvarchar(max)แทนnvarchar(1024))

ป้อนคำอธิบายรูปภาพที่นี่

ในการดูข้อมูลบันทึกเพิ่มเติมคุณต้องใช้โพรซีเดอร์ที่เก็บนี้ sp_help_jobsteplog หรือคุณสามารถสืบค้นmsdb.dbo.sysjobstepslogsตารางโดยตรง

ข้อมูลเพิ่มเติมที่นี่


ไชโยฉันจะทำแบบนี้ เพียงเพื่อแจ้งให้คุณทราบชื่อที่ถูกต้องของตารางนั้นคือ msdb.dbo.sysjobstepslogs ('บันทึก' แทนที่จะเป็น 'บันทึก') ฉันพยายามแก้ไขคำตอบ แต่ไม่อนุญาตให้แก้ไขแบบอักขระเดียว
toryan

1
@toryan np. ฉันได้แก้ไขคำตอบของฉัน หากคุณรู้สึกว่าฉันได้ตอบคำถามของคุณแล้วโปรดโหวต / ทำเครื่องหมายว่าเป็นคำตอบ
Kin Shah

1
ฉันกลับมาทำงานอีกครั้งและมันสร้างข้อผิดพลาดเพียงครั้งเดียวซึ่งมันบันทึกไว้ในตารางตามที่อธิบายไว้ น่าเสียดายที่ข้อความค้นหายังคงถูกตัดทอน - มีวิธีใดบ้างที่จะได้รับข้อมูลเพิ่มเติม
toryan

ฉันสงสัยมัน. คุณสามารถลองใช้วิธีการส่งออกไฟล์วิธีที่ 1 ตามที่อธิบายไว้ในคำตอบของฉัน
Kin Shah

1
@toryan ฉันมีปัญหาเดียวกัน - การเข้าสู่ระบบได้รับยังคงถูกตัดทอนแม้จะมีการส่งออกไปยังตาราง (วิธีการ (ข) ด้านบน) sysjobstepslogsและการอ่าน นี่คือข้อเสนอแนะของการสนทนาออนไลน์ส่วนใหญ่ของปัญหานี้ แต่เมธอด (ก), ส่งออกไปยังไฟล์, ไม่มีปัญหานี้: ไฟล์ข้อความกำลังแสดงการบันทึกขั้นตอนงานทั้งหมดให้ฉัน, โดยไม่มีการตัดทอน! (ในกรณีของฉันขั้นตอนงานของฉันคือDTEXECคำสั่งโดยใช้แพ็คเกจ SSIS) ข้อเสียเปรียบเท่านั้น: จะเห็นเฉพาะการทำงานครั้งสุดท้ายเท่านั้นเว้นแต่จะต่อท้ายไฟล์ แทนที่จะเลือกต่อท้ายฉันเลือกที่จะมีชีวิตอยู่กับการตัดทอนในการวิ่งก่อนหน้านี้
Doug_Ivison

2

คุณสามารถรับข้อความเต็ม:

  1. ไปที่งาน
  2. คลิกขวา select properties
  3. ไปที่ขั้นตอนงาน
  4. เลือกstepและคลิกที่editปุ่ม
  5. advancedเลือก ที่นี่คุณสามารถเห็นเส้นทางบันทึก

ตอนนี้มันง่ายตามเส้นทาง

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