วิธีที่ดีที่สุดในการตรวจสอบแบบสอบถามที่ใช้เวลานานใน SQL Server คืออะไร


10

ฉันต้องเรียกใช้คิวรีที่ใช้เวลานาน (สร้างดัชนีใหม่อัปเดตชุดข้อมูลขนาดใหญ่) สำหรับฐานข้อมูลของฉัน มีทางเลือกอื่นในการเรียกใช้แบบสอบถามใน SQL Server Management Studio และตรวจสอบทุกชั่วโมงหรือไม่ ฉันต้องการส่งอีเมลหรือส่งข้อความเมื่อเสร็จสิ้น แต่ไม่ทราบว่าเป็นเครื่องมือที่ดีที่สุดสำหรับสิ่งนี้

คำตอบ:


4

กำลังติดตาม Gaius โพสต์: คุณสามารถสร้างสคริปต์. SQL ซึ่งทำสิ่งที่คุณต้องการด้วยการใช้ db หน้าสคริปต์ -> สร้างงาน SQL Agent ของประเภทระบบปฏิบัติการที่เรียกใช้สคริปต์:

sqlcmd -E -S SERVERNAME -i "c: \ YOURSCRIPT.sql" -o "C: \ YOURSCRIPT_LOG.log"

เพิ่มขั้นตอนใหม่และใช้ขั้นตอนmsdb.dbo.sp_send_dbmailเพื่อส่งอีเมล คุณลักษณะนี้สามารถปรับแต่งเพื่อแสดงภายในแบบสอบถามที่เฉพาะเจาะจงจากตาราง SQL เพื่อยืนยันการดำเนินการของสคริปต์ ... ตัวอย่างเช่น dbcc showcontig ของดัชนีการสร้างใหม่ของคุณ


1

คุณมีตัวเลือกในการใช้งาน SQL หรือไม่? คุณสามารถทำการแจ้งเตือนและสิ่งที่ชอบผ่านทางนั้น เท่าที่ได้รับการแจ้งเตือนเป็นระยะที่จะต้องมีรหัสบางอย่างในขั้นตอนการจัดเก็บ ฯลฯ


1

ใช่เพียงแค่ใช้xp_sendmail คุณสามารถส่งข้อความที่ตั้งไว้ล่วงหน้าหรือผลลัพธ์ของคำสั่ง SQL ได้อย่างง่ายดาย ฟีเจอร์นี้มีให้ตั้งแต่ SQL Server 6.5 แต่มีกำหนดให้ล้าสมัยในDenali - ถ้านี่จะเป็นส่วนหนึ่งของการดำเนินการของคุณอย่างถาวรคุณควรใช้Database Mailซึ่งเป็น "enterprise" มากกว่า


1

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

เมื่อฉันต้องการตรวจสอบความคืบหน้าของกระบวนการที่ใช้เวลานานฉันก็สอบถามตาราง EventLog

ตัวอย่างผลลัพธ์:

-------------------
- My Big Update -
-------------------
เริ่มต้น: 2011-05-03 10:00:00

บันทึกสู่กระบวนการ: 1,000,000
Chunks: 200

--- ก้อน 1 ---
พยายามอัพเดต MyTable
ระเบียนที่อัปเดต: 5,000
จำนวนที่เหลืออยู่: 995,000
ปริมาณงาน: 4210 บันทึกต่อวินาที

--- ก้อน 2--
พยายามอัพเดต MyTable
ระเบียนที่อัปเดต: 5,000
บันทึกที่เหลืออยู่: 990,000
ปริมาณงาน: 3555 บันทึกต่อวินาที

--- ก้อน 3--
เป็นต้น

ฉันยังมีคอลัมน์ในตาราง EventLog เพื่อติดตามเมื่อมีการเขียนข้อความกระบวนการที่เขียนข้อความ ฯลฯ ขออภัยที่ไม่รวมข้อมูลนั้นไว้ในตัวอย่างของฉัน

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