โอนย้ายจาก SQL Server 2000 เป็น 2012 โดยไม่มีอินสแตนซ์ 2005 หรือ 2008


11

ฉันเจอฐานข้อมูลเก่าสามตัวที่นั่งอยู่บน SQL Server 2000 ซึ่งฉันต้องการย้ายไปยังปี 2012 ฉันเชื่อว่าวิธีมาตรฐานคือการกู้คืนอินสแตนซ์ของปี 2005 หรือ 2008 อัปเดตส่งออกอีกครั้งและคืนค่าในปี 2012

ใช้ได้ยกเว้นเราไม่มีอินสแตนซ์ 2005 หรือ 2008

มีวิธีแก้ไขปัญหาหรือวิธีอื่น ๆ ที่อาจคุ้มค่าที่จะลองหรือไม่

สำหรับข้อมูลฐานข้อมูลมีเพียง 15-20 ตารางและดูไม่กี่ครั้งซึ่งดูง่ายมากและการสำรองข้อมูลมีขนาดเพียง 100-200MB


1
เนื่องจากฐานข้อมูลของคุณมีขนาดเล็กที่คุณสามารถสคริปต์ออกทั้งฐานข้อมูล - คีมาเท่านั้น (ไม่มีข้อมูล - ใช้ PowerShell หรือ SSMS) และจากนั้นใช้ BCP ออกและแทรกกลุ่ม เมื่อคุณย้ายข้อมูลเสร็จแล้วคุณสามารถปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดที่ระบุไว้ในคำตอบนี้
Kin Shah

1
มันถูกกฎหมายอย่างสมบูรณ์และครอบคลุมในการออกใบอนุญาตของ sql เพื่อติดตั้งอินสแตนซ์กลางเป็น "สะพาน" เพื่ออัพเกรด ผู้ใช้ไม่ควรเชื่อมต่อกับมัน ...
Rostol

คำตอบ:


21

ไม่ไม่มีวิธีแก้ไขเฉพาะเพื่ออัปเกรดฐานข้อมูลโดยตรงจากปี 2000 เป็น 2012

เนื่องจากคุณไม่มีข้อมูลมากมายคุณสามารถทำทุกอย่างเพื่อย้ายข้อมูล (แต่ไม่ใช่ฐานข้อมูลโดยรวม) รวมถึง:

  • ตัวช่วยสร้างการนำเข้า / ส่งออก
  • SSIS
  • BCP
  • แบบสอบถามแบบแมนนวลโดยใช้เซิร์ฟเวอร์ที่ลิงก์จาก 2012 หรือแอปพลิเคชัน

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

หากฐานข้อมูลของคุณมีขนาดเล็กกว่า 10GB คุณสามารถติดตั้งสำเนา Express (ฟรี) ในไม่กี่นาทีและใช้งานได้ คุณสามารถดาวน์โหลด 2008 R2 ด่วนที่นี่ ฉันไม่คิดว่าจะมีฟีเจอร์ Enterprise ใด ๆ ในปี 2000 เกี่ยวกับโครงสร้างฐานข้อมูลและอื่น ๆ ที่จะบล็อกการอัปเกรดนั้น

หากฐานข้อมูลของคุณใหญ่เกินไปสำหรับ Express คุณควรจะพบ Developer Edition ราคา $ 49 หรือมากกว่านั้น (หรือถูกกว่า - ฉันพบ 2005 บน eBay ในราคา $ 37 ) หรือถ้าคุณสมัคร MSDN คุณควรจะได้รับอะไรก็ได้ SKU จากที่นั่น

หรือคุณสามารถหลีกเลี่ยงการใช้รุ่นทดลองใช้ซึ่งยังคงมีการเสนอการดาวน์โหลดรุ่นเก่าอย่างน่าอัศจรรย์ (เช่นฉันพบ 2008 ที่นี่ ) แต่ฉันใช้งานโทรศัพท์อยู่จึงไม่สามารถยืนยันการดาวน์โหลดสำหรับรุ่นนั้นได้ .


ขอบคุณ เนื่องจากความเร็วอินเทอร์เน็ตที่นี่แย่ฉันพยายามหลีกเลี่ยงการดาวน์โหลด แต่ฉันพบไบนารีการติดตั้งในปี 2005 ดังนั้นฉันจึงคิดว่านั่นเป็นวิธีที่เร็วที่สุด
Lunatik

ไม่, สิ่งเดียวที่มีประโยชน์จริง ๆ คือ 2008 ไม่เช่นนั้นคุณจะต้อง 2010 จาก 2005
Rostol

คุณแน่ใจ @Rostol หรือไม่ sqlskills.com/blogs/paul/…
Adam

@ AdamNofsinger ฉันกำลังจะบอกว่า 100% แน่นอนฉันทำสิ่งนี้เป็นล้านล้านครั้ง (เรามี SQL 2000 เก่าที่ใช้โดยระบบเก่า) และมีจุดประสงค์ในการสร้าง 2008 vm เพื่อกู้คืนข้อมูลก่อนแล้วจึงสำรองและกู้คืน SQL 2016 ... แต่ถ้าพอลแรนดัลพูดเป็นอย่างอื่น ... แต่โปรดจำไว้ว่าวิธีการทำงานโดยตรงจากปี 2005+ ไม่ใช่สำหรับปี 2000 และ 2003
Rostol

6

การระบุว่าไม่มีวิธีแก้ไขเฉพาะหน้าดูเหมือนว่าจะคลอดก่อนกำหนดเล็กน้อย

คุณบอกว่าฐานข้อมูลของคุณมีเพียงไม่กี่ตารางและมุมมอง ทำไมไม่ส่งออกตารางและมุมมอง schema เป็น SQL สร้างคำสั่งและรันบนฐานข้อมูลเป้าหมายของคุณ? จากนั้นคุณสามารถส่งออกข้อมูลจริงลงในรูปแบบ CSV และนำเข้าสู่ฐานข้อมูลเป้าหมายหรืออาจเขียนอะไรใน C # / C ++ / etc เพื่อส่งออก / นำเข้าข้อมูลจริง

คุณไม่จำเป็นต้องเสียเงินกับอินสแตนซ์ใหม่ของ SQL Server ที่คุณไม่ต้องการ


3
และรวมถึงวัตถุอื่น ๆ ทุกขั้นตอนการจัดเก็บทริกเกอร์ฟังก์ชั่น ฯลฯ แน่นอน ในทำนองเดียวกันมียูทิลิตี้ BCP สำหรับการคัดลอกข้อมูลจากและไปยังฐานข้อมูล
RLF

1
ขอบคุณ นั่นเป็นสิ่งที่ฉันหวังว่าจะได้ แต่ DB wrangling ไม่ใช่งานประจำวันของฉันและฉันก็ไม่แน่ใจเหมือนกันว่ามีการอ้างอิงหรือการตั้งค่าอื่น ๆ (การอนุญาตผู้ใช้เป็นต้น) ที่จะไม่ถูกคัดลอกถ้าฉัน เพิ่งส่งออกตารางและอื่น ๆ
Lunatik

4
ยุติธรรมแล้วอัพเดทคำตอบของฉัน ยังคงคิดว่าการแก้ไขปัญหาเป็นการทำงานมากกว่าการวางอินสแตนซ์ชั่วคราวและทำการสำรองข้อมูล + การกู้คืนข้อมูลที่เชื่อถือได้และไม่เกิดข้อผิดพลาด (นอกจากนี้ดูเหมือนว่าจะไม่เกี่ยวกับเงินเนื่องจาก OP มีไบนารี 2005 อยู่แล้วและฐานข้อมูลขนาดเล็กควรสามารถโยกย้ายได้โดยใช้ SQL Express ต่อไป)
Aaron Bertrand

3

ไม่คุณไม่สามารถโอนย้ายโดยตรงจาก 2000 ถึง 2012

สิ่งที่คุณสามารถทำได้คือติดตั้งอินสแตนซ์ชั่วคราวของปี 2005 หรือ 2008 หรือ 2008R2, คืนค่าฐานข้อมูล 2000 ที่นี่ เมื่อเสร็จแล้วคุณสามารถอัปเกรดจากอินสแตนซ์ที่ติดตั้งได้โดยทำการสำรองข้อมูลฐานข้อมูลจากอินสแตนซ์นั้นและเรียกคืนสู่ sql server 2012

คุณจะต้องทำการโยกย้ายในสองขั้นตอน:

  • ขั้นตอนที่ 1: ทำการโอนย้ายครั้งแรกจาก SQL 2000 เป็น SQL 2008 เป็นตัวอย่าง คุณต้องเป็น SQL 2000 SP4 จากนั้นทำตามขั้นตอนนี้: การโยกย้าย SQL Server 2000 ไปยัง SQL Server 2008

  • ขั้นตอนที่ 2: ทำการโยกย้ายครั้งที่สองจาก SQL Server 2008 ถึง 2012


0

คุณบอกว่าคุณ "เจอฐานข้อมูลเก่าสามแห่งที่นั่งอยู่บน SQL Server 2000" ซึ่งทำให้ฉันเชื่อว่าคุณต้องการข้อมูลเท่านั้น ฉันเดาว่าถ้าพวกเขาถูกเรียกใช้เพื่อจุดประสงค์คุณจะรู้ หากเป็นกรณีนี้ให้ละเว้นคำถามทั้งหมดของผู้ใช้ความปลอดภัย ฯลฯ

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


0

คุณไม่สามารถโยกย้ายโดยตรงจาก SQL Server 2000 ไปยัง SQL Server 2012 และถ้าคุณพยายามทำคุณจะได้รับหมายเลขข้อผิดพลาด 3169 ต่อไปนี้ซึ่งเกี่ยวข้องกับปัญหาความเข้ากันได้

การโยกย้ายไปยัง SQL Server 2012 สามารถทำได้จากหนึ่งในเวอร์ชันต่อไปนี้ (เวอร์ชันขั้นต่ำ) SQL Server 2005 SP4 หรือ SQL Server 2008 SP2 หรือ SQL Server 2008 R2 SP1

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

หลังจากที่คุณได้รับรายงานคุณจะต้องกู้คืนฐานข้อมูลในเป้าหมาย SQL Server 2005 SP4 หรือ SQL Server 2008 SP2 หรือ SQL Server 2008 R2 SP1 และเรียกใช้ระดับความเข้ากันได้ของมัน (คุณสามารถค้นหาได้จากตัวเลือกฐานข้อมูล) สำหรับ SQL เข้าสู่ระบบเซิร์ฟเวอร์โปรดปฏิบัติตามคำแนะนำในต่อไปนี้การเชื่อมโยง

เมื่อเสร็จสมบูรณ์ตอนนี้คุณต้องโยกย้ายไปยัง SQL Server 2012 โดยทำซ้ำขั้นตอนเดียวกันจากเซิร์ฟเวอร์ที่คุณทำการย้ายครั้งแรก


0

ครั้งแรกฉันยอมรับว่าคุณไม่ควรย้ายจาก 2000 ถึง 2012 โดยตรง ฉันคิดว่ากระบวนการนี้ได้รับการคุ้มครองอย่างดี ฉันอยากจะแนะนำให้คุณตรวจสอบว่ามีใครใช้ฐานข้อมูลและสิ่งที่พวกเขาใช้สำหรับ อาจเป็นเพราะพวกเขาไม่ได้ใช้งาน มันเกิดขึ้นและถ้าเป็นเช่นนั้นคุณก็ไม่ต้องกังวล อาจเป็นได้ว่าการเพิ่ม 2 หรือ 3 ตารางและข้อมูล (สำหรับ 2000 ใช้ bcp หากคุณต้องการดึงข้อมูลออกมาสำหรับแต่ละตารางให้ง่ายและน่าเชื่อถือ) ไปยังฐานข้อมูล 2012 ที่มีอยู่จะตอบสนองความต้องการของผู้ใช้ หากคุณทำเช่นนั้นให้สร้างตารางใหม่ในฐานข้อมูล 2012 และ bcp out ข้อมูลที่คุณต้องการใน csv คุณสามารถ bcp กลับมาหากคุณต้องการ หากคุณต้องโยกย้ายมากกว่าหนึ่งตารางหรือสองวิธีที่ง่ายที่สุดและปลอดภัยที่สุดและดีที่สุดคือการย้ายข้อมูลสองขั้นตอน ดอน'


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