การผูกมัดงานของ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL


9

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


1
+2 ฉันคิดถึงคืนนี้ :) :)
jcolebrand

1
แต่ละรายการของคุณจำเป็นต้องแยกงานหรือไม่ พวกเขาสามารถตั้งค่าเป็นงานหลักที่มีขั้นตอนงานแยกต่างหากและสำหรับแต่ละขั้นตอนงานเพิ่ม t-sql หรือตรรกะอื่น ๆ ซึ่งกำหนดว่าขั้นตอนควรทำงานและวิธี (เช่นถ้า (เงื่อนไข = จริง) ทำงานอื่นไม่ทำอะไรเลย
johndacostaa

ขอบคุณทุกคนที่ให้ความช่วยเหลือฉันดูเหมือนว่า Aarons วิธีที่แนะนำคือการใกล้เคียงที่สุดกับสิ่งที่ฉันต้องการ ฉันจะดูว่าฉันได้รับอนุญาตสำหรับเครื่องมือที่จะทำมิฉะนั้นภายในตัวแทน SQL ฉันจะต้องทำงานมอนสเตอร์ :(.
nojetlag

คุณพูดว่า "แพ็คเกจ" คุณหมายถึงแพ็คเกจ SSIS หรือไม่
SqlSandwiches

เห็นด้วยกับ John DaCosta ใช้ขั้นตอนที่มีเงื่อนไข
Alex_L

คำตอบ:


5

มีเครื่องมือของบุคคลที่สามอยู่ภายนอกซึ่งจะช่วยให้คุณทำสิ่งนี้หากคุณไม่มีช่วงเวลาการเรียนรู้หรือความเชี่ยวชาญที่มีอยู่ในการใช้ SSIS คำเตือน: ฉันทำงานให้กับหนึ่งใน บริษัท เหล่านั้น ตรวจสอบ SQL Sentry - รองรับงาน SQL Server (รวมถึงแพ็คเกจ SSIS), Windows Scheduled Tasks และแม้แต่งาน Oracle นี่คือคุณสมบัติของ SQL Server (รวมถึงการเชื่อมโยงและการจัดคิว):

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


อืมฉันคิดว่าเขาสามารถสืบค้นตารางระบบ msdb ได้และมีสถานะของงานอื่น ๆ (และขั้นตอน) ถ้าฉันผิดฉันจะขอโทษและให้ 6 แพ็คสำหรับการเปิดเผย :-) นี้
Marian

ไม่เข้าใจประเด็นของคุณ การสอบถามตาราง msdb จะช่วยให้เขาเชื่อมโยงงานเข้าด้วยกันได้อย่างไร ในขณะที่ 1 = 1 จนกว่าสถานะจะเปลี่ยนไปหรือไม่ การแจ้งเตือนการค้นหา? แน่ใจว่ามีหลายวิธีที่คุณสามารถทำได้ด้วยตนเอง แต่มันจะเป็นห่ามที่ซับซ้อนกว่าการเรียก sp_start_job
แอรอนเบอร์ทรานด์ด์

8

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

นั่นคือคำตอบของฉันสร้างแพ็คเกจ SSIS และใช้คำสั่ง t-sql เพื่อโทรหางาน SQL Agent ตามที่ต้องการ ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดและสถานการณ์จำลองที่ชัดเจน คุณอาจไม่ต้องการให้มีงานจำนวนมากตีตารางเดียวกันในเวลาเดียวกันตัวอย่างเช่น

HTH


Silly ฉันคาดหวังว่า "องค์กร" จัดตารางเวลาในผลิตภัณฑ์ "Enterprise Edition" ที่เป็นผู้ใหญ่ :) ฉันมีความหวังเนื่องจากฉันสามารถรวมสิ่งต่าง ๆ มากมายเป็นขั้นตอนตลกที่ชัดเจนที่สุด (งานอื่น) ไม่สามารถใช้เป็นวัตถุที่ปฏิบัติการได้ ฉันใช้งานเพื่อเรียกใช้แพคเกจ SSIS ที่มีความซับซ้อนมากมายต้องสร้างแพคเกจ SSIS อีกชุดเพื่อใช้งานได้อย่างยืดหยุ่นดูเหมือนว่าไม่ใช่วิธีที่เหมาะสมสำหรับฉัน โดยเฉพาะอย่างยิ่งตั้งแต่ฉันจะจบลงอีกครั้งด้วย asynch sp_start_job
nojetlag

6

คุณควรพยายามโดยใช้สคริปต์ T-SQL ในขั้นตอนงานของคุณโดยใช้ระบบการจัดเก็บsp_start_job มันจะช่วยให้คุณเชื่อมโยงงานที่คุณต้องการ


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

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