ใน SQL Server วัตถุประสงค์ของการจัดกลุ่มกระบวนงานที่เก็บไว้คืออะไร


35

หนึ่งในปัญหาที่น่างงที่สุดที่ฉันต้องจัดการกับกลุ่ม Stored Procedure ได้รับการจัดเก็บusp_DoSomethingAwesomeผมสามารถสร้าง proc usp_DoSomethingAwesome;2ในกลุ่มอีกว่าโดยเรียกมันว่า

ฉันค้นพบสิ่งนี้เมื่อแก้ไขปัญหาการจำลองแบบบางอย่าง (ผู้เผยแพร่: SQL 2000 Ent., Dist / Sub: 2008 R2 Ent.) ที่เกิดขึ้นกับขั้นตอนการแทรกการปรับปรุงและการจำลองแบบที่สร้างโดยระบบ

อะไรคือจุดประสงค์ / ความคิดเบื้องหลังการมีความสามารถ "การจัดกลุ่ม" นี้?

คำตอบ:


32

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

พวกเขาจะเรียกว่าขั้นตอนที่มีหมายเลขและพวกเขาจะเลิกอย่างแน่นอน ( ประกาศตั้งแต่ปี 2005 ) พวกเขายังคงได้รับการสนับสนุนใน SQL Server 2012 แต่คุณลักษณะบางอย่างไม่ได้เล่นกับพวกเขา ตัวอย่างเช่นพวกเขาถือว่าเป็นการละเมิดการบรรจุในฐานข้อมูลที่มีอยู่และขั้นตอนใด ๆ ที่มีหมายเลข> 1 จะไม่ถูกสร้างขึ้น:

ข่าวสารเกี่ยวกับ 12829, ระดับ 16, สถานะ 1, โพรโทคอลบลัท, สาย 1
โพรซีเดอร์ที่เก็บ 'dbo.blat' หมายถึงกลุ่มของโพรซีเดอร์ที่เก็บหมายเลข กระบวนงานที่เก็บหมายเลขไม่พร้อมใช้งานในฐานข้อมูลที่มีอยู่ โปรดศึกษาหัวข้อ Books Online การทำความเข้าใจกับฐานข้อมูลที่มีอยู่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฐานข้อมูลที่มีอยู่


5

ความสามารถ (เลิกใช้งาน) ไปยังกลุ่มกระบวนงานที่เก็บไว้ดูเหมือนจะมีวัตถุประสงค์เดียว (และค่อนข้างโง่): ความสามารถในการลบจำนวนมากผ่านDROPคำสั่งเดียว ตามเอกสารคู่มือ SQL Server 2000 MSDN สำหรับการสร้างโพรซีเดอร์ที่เก็บ :

การจัดกลุ่ม
ขั้นตอนสามารถสร้างขึ้นด้วยชื่อเดียวกันกับขั้นตอนการจัดเก็บที่มีอยู่หากได้รับหมายเลขประจำตัวที่แตกต่างกันซึ่งช่วยให้ขั้นตอนการจัดกลุ่มทางตรรกะ ขั้นตอนการจัดกลุ่มที่มีชื่อเดียวกันช่วยให้สามารถลบได้ในเวลาเดียวกัน ขั้นตอนที่ใช้ในแอปพลิเคชันเดียวกันมักจะถูกจัดกลุ่มด้วยวิธีนี้ ตัวอย่างเช่นโพรซีเดอร์ที่ใช้กับแอ็พพลิเคชันmy_appอาจมีชื่อว่าmy_proc; 1, my_proc; 2และอื่น ๆ การลบmy_procลบกลุ่มทั้งหมด หลังจากจัดกลุ่มโพรซีเดอร์แล้วไม่สามารถลบแต่ละโพรซีเดอร์ภายในกลุ่ม

ไม่มีประโยชน์เพิ่มเติมสำหรับการใช้โครงสร้างนี้เนื่องจากการใช้ชื่อฐานเดียวกันไม่อนุญาตให้มีการบรรทุกเกินพิกัด (ลายเซ็นไม่จำเป็นต้องไม่ซ้ำกันและไม่มีการดำเนินการกำหนดเส้นทางอัตโนมัติไปยัง "หมายเลข" โดยเฉพาะ) และคุณยังจำเป็นต้อง ใช้ "หมายเลข" เมื่อดำเนินการ ดังนั้นความมุ่งมั่นของ "โง่" (และนั่นอาจเป็นวิธีที่ดีเกินไปเกี่ยวกับมัน ;-)

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