จาก Developer ไปยัง Enterprise จะไม่เป็นไรให้แน่ใจว่าหากคุณใช้สิทธิ์การใช้งานตัวประมวลผลคุณมีสิทธิ์ใช้งานบนเซิร์ฟเวอร์เป้าหมายเพื่อครอบคลุม CPU ทั้งหมด และไม่เพียงพอที่จะซ่อนพวกเขาจาก SQL หากพวกเขาเชื่อมต่อกับเครื่องคุณต้องรับผิดชอบต่อพวกเขา
นอกจากนี้เมื่อคุณเปลี่ยนจากบิลด์ต่ำเป็นบิลด์ที่สูงกว่าเวอร์ชันฐานข้อมูลของคุณจะเพิ่มขึ้น มีบางสถานการณ์ที่อาจเป็นปัญหาได้ - เช่นหากคุณใช้การสนับสนุนพาร์ติชัน 15,000 ในการสร้างเฉพาะของปี 2008 มันจะไม่ทำงานเมื่อคุณอัปเกรดเป็น build เฉพาะของ 2008 R2 คุณอาจต้องพึ่งพาการปรับให้เหมาะสม (และมีวิธีแก้ไขปัญหา) ซึ่งเป็นข้อบกพร่องจริง ๆ ในงานสร้างรุ่นเก่า แต่ได้รับการแก้ไขในงานสร้างใหม่และสิ่งนี้อาจนำไปสู่ประสิทธิภาพที่แย่ลง นอกจากนี้ยังเป็นสิ่งสำคัญในการตรวจสอบสถานะการติดตามใด ๆ ที่ใช้งานอยู่ที่แหล่งที่มาและพิจารณาว่าควรเปิดใช้งานที่ปลายทางหรือไม่ ไม่ต้องสนใจงานการเข้าสู่ระบบ ฯลฯ
แน่นอนคุณไม่สามารถย้อนกลับได้ ฉันไม่เคยลองปรับลดรุ่นเล็กน้อยเช่น 10.0.5512 -> 10.0.5500 แต่มันเป็นไปไม่ได้แน่นอนที่จะลงไปใน Service Pack หรือรุ่น ดังนั้นหากคุณมีฐานข้อมูล 2012 ในอินสแตนซ์ Developer Edition ของคุณและคุณต้องการใส่ไว้ในอินสแตนซ์ 2008 ของคุณในการผลิตคุณจะได้ผลงานของคุณถูกตัดออก (ดูที่นี่และที่นี่ ) โดยเฉพาะอย่างยิ่งถ้าคุณใช้คุณสมบัติ 2012 .
แต่เพื่อครอบคลุมกรณีอื่น ๆ ที่อาจทำให้ผู้คนในคำถามนี้ (เช่นมีคนต้องการไปจากนักพัฒนา -> มาตรฐานหรือองค์กร -> ด่วนหรือสิ่งที่มีคุณ) ...
มีรุ่นอื่น ๆ -> การอัปเกรดรุ่นที่ทำได้ไม่ดีนักเช่นจากนักพัฒนา -> Express หากคุณใช้คุณสมบัติใด ๆ ที่ไม่ได้รับการสนับสนุนใน Express (และจะเหมือนกันกับรุ่นอื่น ๆ ที่ไม่ใช่ Enterprise จริงๆ) ตัวอย่างของคุณสมบัติที่คุณจะไม่สามารถใช้กับรุ่นระดับล่างได้ (ซึ่งในกรณีนี้การคืนค่าจะตายเมื่อถึงจุดที่ฐานข้อมูลออนไลน์พยายามนำมาใช้):
- การแยก
- เปลี่ยนการเก็บข้อมูล
- การบีบอัดข้อมูล
- การเข้ารหัสข้อมูลแบบโปร่งใส
ฉันไม่รู้ว่ามีวิธีที่จะบอกสิ่งนี้โดยตรงจากไฟล์. BAK หรือไม่ (ฉันแน่ใจว่ามีเวทมนตร์บางอย่างที่สามารถแยกออกจากส่วนหัวของหน้าเว็บที่อื่นหรือถ้าคุณมีเวลาหนึ่งสัปดาห์ในการเขียนด้วย hex editor) แต่ในขณะที่ฐานข้อมูลยังคงอยู่บนอินสแตนซ์ของแหล่งข้อมูลคุณสามารถทำสิ่งต่อไปนี้เพื่อดูว่าคุณใช้คุณสมบัติใด ๆ ที่มีอยู่เนื่องจาก SKU ที่คุณใช้อยู่หรือไม่:
SELECT feature_name FROM sys.dm_db_persisted_sku_features;
ฉันไม่แน่ใจว่าการตรวจสอบ SQL Server ควรอยู่ในรายการนั้นหรือไม่การเปลี่ยนแปลงรุ่นของคุณสมบัตินั้นจึงอาจขึ้นอยู่กับสิ่งที่คุณทำ มีสิ่งอื่น ๆ ที่คุณอาจใช้อยู่ แต่จะไม่ปรากฏใน DMV (บางอย่างเป็นเพราะอยู่ในรหัสของคุณซึ่ง DMV ไม่แยกวิเคราะห์และบางอย่างเนื่องจากฐานข้อมูลของคุณอาศัยสิ่งภายนอกเช่น SQL Server Agent , นายหน้าบริการ ฯลฯ ):
- มิเรอร์
- การจำลองแบบบางรูปแบบ
- บันทึกการจัดส่ง
- ภาพรวมฐานข้อมูล
- การจัดทำดัชนีออนไลน์
- มุมมองที่แบ่งพาร์ติชันแบบกระจายที่อัพเดตได้
- การบีบอัดข้อมูลสำรอง
- การจัดการตามนโยบาย
- คู่มือวางแผน
- จดหมายฐานข้อมูล
- แผนการบำรุงรักษา
- ค้นหาข้อความแบบเต็ม
นอกจากนี้ยังมีกรณีที่คุณจะไม่สามารถไปจาก Developer to Express ได้เนื่องจากข้อ จำกัด ขนาดไฟล์ (ฐานข้อมูล Express ถูก จำกัด ไว้ที่ 10GB ในขนาดไฟล์ข้อมูลทั้งหมด)
แน่นอนอาจมี gotchas อื่น ๆ ที่คุณจะไม่ได้รับการเตือนเกี่ยวกับ - พวกเขาจะไม่ป้องกันการโยกย้าย แต่พวกเขาอาจนำไปสู่ประสิทธิภาพที่แตกต่างกันมากในเป้าหมาย ตัวอย่าง:
- ข้อ จำกัด หน่วยความจำ / CPU ที่แตกต่างกันในรุ่นเป้าหมาย (หรือแม้กระทั่งระบบปฏิบัติการพื้นฐานบนเป้าหมาย) ผู้คนจำนวนมากที่เปลี่ยนจาก 2008 R2 Enterprise เป็น 2012 Enterprise (CAL) ซึ่งบริการนี้ถูก จำกัด ไว้ที่ 20 คอร์แรกเท่านั้น สิ่งนี้สามารถนำไปสู่ความแตกต่างของประสิทธิภาพที่ตรงไปตรงมา (หน่วยความจำไม่เพียงพอที่จะตอบแบบสอบถามเช่นหรือประสิทธิภาพของแบบสอบถามแบบขนานที่ช้ากว่า) สิ่งที่ลึกซึ้งยิ่งขึ้นรวมถึงตัวเลือกแผนที่ทำขึ้นเนื่องจากฮาร์ดแวร์พื้นฐานที่แตกต่างกัน
NOEXPAND
การพึ่งพาคุณสมบัติเช่นการจับคู่การจัดทำดัชนีมุมมองกับแหล่งที่มาจะไม่ได้รับการเคารพโดยอัตโนมัติตามเป้าหมายโดยไม่ต้องเปลี่ยนรหัสที่มากับการใช้งาน และคุณอาจไม่ทราบด้วยซ้ำว่าความสามารถนี้เป็นสาเหตุที่ทำให้แบบสอบถามของคุณช้าลง
- กันสำหรับการดำเนินการดัชนีแบบขนานและอาจเป็นการเพิ่มประสิทธิภาพอื่น ๆ ที่ไม่ได้คำนึงถึงในขณะนี้ (ขอบคุณที่ฉันทำงานเกือบเฉพาะในพื้นที่องค์กรดังนั้นฉันไม่ต้องกังวลเกี่ยวกับข้อ จำกัด ของรุ่นที่ต่ำกว่าในกรณีส่วนใหญ่ )
อัปเดตตามข้อมูลซ้ำนี้ :
อาจมีบางกรณีที่คุณพยายามกู้คืนฐานข้อมูลจากรุ่นที่แน่นอนไปเป็นรุ่นที่น้อยกว่า (แม้จะเป็นรุ่นเดียวกัน) และคุณได้รับข้อผิดพลาดที่มีประโยชน์น้อยกว่า :
RESTORE ล้มเหลวสำหรับเซิร์ฟเวอร์ 'เซิร์ฟเวอร์ \ instance'
RESTORE ไม่สามารถเริ่มฐานข้อมูล 'databasename'
มันไม่ง่ายนัก อย่างไรก็ตามหากคุณมองลึกลงไปในบันทึกเหตุการณ์ของ SQL Server คุณจะเห็นข้อผิดพลาดที่มีประโยชน์มากขึ้น (ตัวอย่างเดียว):
ฐานข้อมูล 'databasename' ไม่สามารถเริ่มทำงานได้เนื่องจากฟังก์ชันการทำงานของฐานข้อมูลบางส่วนไม่พร้อมใช้งานใน SQL Server รุ่นปัจจุบัน
ฐานข้อมูล 'databasename' ไม่สามารถเริ่มใน SQL Server รุ่นนี้ได้เนื่องจากมีฟังก์ชันพาร์ติชัน '_dta_pf__9987' SQL Server รุ่น Enterprise เท่านั้นที่รองรับฟังก์ชั่นพาร์ติชัน
ตอนนี้ไม่เป็นความจริงเลย - คุณสามารถกู้คืนเป็นรุ่นทดลองใช้หรือรุ่นสำหรับนักพัฒนาซอฟต์แวร์ได้ แต่จะอยู่ด้านข้างจุด ในการกู้คืนฐานข้อมูลนี้โดยทั่วไปคุณมีสองตัวเลือก:
- คืนค่าเป็น SQL Server รุ่นที่เหมาะสมซึ่งจะหมายถึงการค้นหาหรือติดตั้งอินสแตนซ์ใหม่
- คืนค่าการสำรองข้อมูลบนเซิร์ฟเวอร์ต้นทางเป็นฐานข้อมูลใหม่ที่มีชื่อแตกต่างกันลบคุณลักษณะใด ๆ และทั้งหมดขององค์กรจากนั้นสำรองฐานข้อมูลอีกครั้งและเรียกคืนข้อมูลนั้นในรุ่นที่น้อยกว่า (ในกรณีนี้โดยเฉพาะฉันทิ้งชื่อของฟังก์ชั่นพาร์ติชันไว้ในข้อความแสดงข้อผิดพลาดเพราะมันดูเหมือนว่าจะเป็นสิ่งที่ถูกทิ้งอยู่แล้ว - มันถูกสร้างขึ้นโดย Database Engine Tuning Advisor และอาจทำได้โดยคนที่ไม่ได้ค่อนข้าง รู้ว่าพวกเขากำลังทำอะไรอยู่นี่ไม่ใช่กรณีเสมอไป)
การเปลี่ยนแปลงใน (2) จะเป็นการลบการแบ่งพาร์ติชันและคุณลักษณะอื่น ๆ บนฐานข้อมูลต้นทางและทำการสำรองข้อมูลอีกครั้ง แต่ถ้ามันไม่พัง ...