ขั้นตอนที่สำคัญที่สุดที่จะทำคือการใช้Upgrade Advisorบนฐานข้อมูล SQL Server 2000 และอยู่ทุกประเด็นที่มีการรายงานโดยมัน
แนวทางปฏิบัติที่ดีที่สุดให้ใช้เครื่องมือ Upgrade Advisor บนฐานข้อมูลดั้งเดิมของ SQL Server 2000 ของคุณและนำเข้าไฟล์ติดตามไปยังเครื่องมือ Upgrade Advisor สำหรับการวิเคราะห์ ไฟล์ติดตามช่วยให้ Upgrade Advisor ตรวจพบปัญหาที่อาจไม่ปรากฏในการสแกนฐานข้อมูลอย่างง่ายเช่น TSQL ที่ฝังอยู่ในแอปพลิเคชัน คุณสามารถดักจับร่องรอยของ TSQL โดยใช้ SQL Profiler บนเซิร์ฟเวอร์ SQL Server 2000 ของคุณในช่วงเวลาปกติและวิเคราะห์การติดตามเหล่านี้โดยใช้ Upgrade Advisor
ดังนั้นขั้นตอนที่เหลือจะเป็น:
ในวันที่ย้ายถิ่น:
- สคริปต์การเข้าสู่ระบบของเราใน Server 2000 โดยใช้sp_help_revlogin
- สคริปต์งานและเซิร์ฟเวอร์ที่เชื่อมโยงจากเซิร์ฟเวอร์ sql 2000
- หยุด webservers ที่เชื่อมต่อกับเซิร์ฟเวอร์ 2000 ตรวจสอบให้แน่ใจว่าไม่มีแอปพลิเคชันเชื่อมต่อกับเซิร์ฟเวอร์ 2000
- สำรองฐานข้อมูลของคุณและเรียกคืนบนเซิร์ฟเวอร์ปลายทาง sql 2008 R2 (หมายเหตุ: อย่าถอด / แนบเนื่องจากสิ่งต่าง ๆ อาจผิดพลาดและคุณจะจบลงด้วยฐานข้อมูลเดี่ยวและไม่มีการสำรองข้อมูล!)
- เมื่อการสำรองข้อมูลของคุณถูกกู้คืนบนเซิร์ฟเวอร์ 2008 R2 ให้เรียกใช้เอาต์พุตจาก sp_help_revlogin บนเซิร์ฟเวอร์ 2008 R2 เพื่อสร้างการเข้าสู่ระบบอีกครั้ง
- ซิงค์ผู้ใช้ที่ไม่ได้ใช้งาน (ถ้ามี) และสร้างงานเอเจนต์ sql และเซิร์ฟเวอร์ที่เชื่อมโยงใหม่บนเซิร์ฟเวอร์ใหม่
- เปลี่ยนระดับความเข้ากันได้กับฐานข้อมูลที่กู้คืนเป็น 100
- Dbcc checkdb ที่เปิดใช้ตัวเลือก all_errormsgs และ data_purity:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
- รัน DBCC UPDATEUSAGE บนฐานข้อมูลที่เรียกคืน
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
- อัปเดตสถิติของตารางทั้งหมดด้วยการสแกนแบบสมบูรณ์:
Update Statistics table_name with FULLSCAN
- ทางเลือก: ตรวจสอบระดับการแตกแฟรกเมนต์และขึ้นอยู่กับระดับการแตกแฟรกเมนต์ให้รันดัชนี / สร้างใหม่ของดัชนีทั้งหมด คุณสามารถใช้สคริปต์ Ola ของ
- คอมไพล์ SP ทั้งหมดที่ใช้อีกครั้ง
sp_recompile 'procedureName'
- รีเฟรชมุมมองของคุณ
SP_REFRESHVIEW view_name
- ตรวจสอบให้แน่ใจว่าได้เปลี่ยนตัวเลือกฐานข้อมูล: ตรวจสอบหน้าเป็น CHECKSUM
- เปลี่ยนรูปแบบการกู้คืน (หากแตกต่างจาก sql 2000) เป็น FULL หากคุณเปลี่ยนเป็นรูปแบบการกู้คืนแบบเต็มรูปแบบคุณต้องสำรองข้อมูลบันทึกธุรกรรมเป็นประจำ สิ่งนี้จะช่วยคุณในการกู้คืนจุดเวลารวมทั้งไม่ขยาย T-Log ของคุณ
ใน SQL Server 2005 ขึ้นไปMail Databaseได้ถูกนำมาใช้ ดังนั้นคุณต้องย้ายจาก SQLMail ไปยัง Database Mail
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
นอกจากนี้ถ้าคุณมีการจำลองแบบคุณต้องรีเซ็ตมัน หาก DR เช่น logshipping หรือ Mirroring ใด ๆ (ใหม่ในปี 2005 และสูงกว่า แต่คิดค่าเสื่อมราคาในปี 2012) คุณต้องรีเซ็ตมันเช่นกัน
แพคเกจ DTS เก่าจะต้องมีการอพยพไป SSIS ใช้C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe
(บรรทัดคำสั่ง) หรือใช้แพคเกจช่วยสร้างการโยกย้าย
นอกจากนี้คุณยังสามารถใช้พบสคริปต์ของฉันที่/dba//a/36701/8783 แม้ว่ามันจะใช้วิธีการแยก / แนบฉันขอแนะนำให้คุณใช้วิธีการสำรองข้อมูล / เรียกคืน เปลี่ยนสคริปต์ตามนั้น
ในฐานะที่เป็นบันทึกด้านข้าง:
- เปิดการ เตรียมใช้งานไฟล์ทันทีบนเซิร์ฟเวอร์ใหม่
- มีไฟล์ข้อมูล tempdb หลายไฟล์ที่มีขนาดเท่ากัน
- เปิดใช้งานการตั้งค่าสถานะติดตาม 1118
- กำหนดค่าหน่วยความจำสูงสุดและต่ำสุดอย่างถูกต้อง โดยเฉพาะอย่างยิ่งหน่วยความจำสูงสุดอยู่ห่างจากค่าเริ่มต้น
- ปรับการตั้งค่า MAXDOP อย่างเหมาะสม อ้างถึง/dba//a/36578/8783สำหรับรายละเอียดเพิ่มเติม
- ดีที่สุดคือการติดตั้งsp_Blitzจาก Brent Ozar เรียกใช้และแก้ไขปัญหาที่สำคัญและมีลำดับความสำคัญสูงที่รายงาน
- คุณสามารถใช้SQL Power Docจาก kendalvandyke ได้ - SQL Power Doc ทำงานกับ SQL Server ทุกรุ่นจากSQL Server 2000ถึง 2012 และ Windows Server ทุกรุ่นและระบบปฏิบัติการ Windows สำหรับผู้ใช้ทั่วไปทุกรุ่นตั้งแต่ Windows 2000 และ Windows XP ถึง Windows Server 2012 และ Windows 8. ยังมีประโยชน์สำหรับการอัพเกรดการวางแผน - ดูว่ามีฟีเจอร์ใดที่ซ่อนอยู่ในอินสแตนซ์
- เปิดใช้งานการปรับให้เหมาะสมสำหรับเวิร์กโหลดเฉพาะกิจและตัวเลือกการบีบอัดข้อมูลสำรองเริ่มต้น
ช่วยตอบคำถามของคุณ ...
ฉันต้องทำอะไรอีกบ้างเพื่อให้การย้ายข้อมูลเสร็จสมบูรณ์
อ้างถึงคำตอบของฉัน มันจะช่วยให้คุณวางแผนการโยกย้ายอย่างถูกต้อง ทดสอบแผนการโยกย้ายของคุณเสมอใน UAT (ไม่ใช่การผลิต) พร้อมกับการทดสอบแอปพลิเคชันที่เหมาะสมโดยผู้ใช้ทางธุรกิจ
ใช้คุณสมบัติใหม่เช่นการตรวจสอบและการกู้คืนแบบเต็ม
CHECKSUM
ใหม่ใน SQL Server 2005 และใหม่กว่า ฉันกล่าวถึงเป็นส่วนหนึ่งของขั้นตอนการย้ายข้อมูลที่อธิบายไว้ข้างต้น
full recovery model
ไม่ใช่เรื่องใหม่ ขึ้นอยู่กับประเภทธุรกิจของคุณและกำหนดจำนวนข้อมูลที่คุณสูญเสียในกรณีที่เกิดภัยพิบัติ
โหมดการกู้คืนเต็มรูปแบบที่มีการสำรองข้อมูลบันทึกธุรกรรมบ่อยครั้งจะช่วยให้คุณสามารถกู้คืนจุดในเวลาและโดยการลดจำนวนข้อมูลที่สูญหาย
ทำฐานข้อมูลนี้ให้ตรงตามที่สร้างใน SQL Server 2008 R2
ทำให้ฐานข้อมูลนี้เข้ากันได้อย่างสมบูรณ์ถูกต้องและเหมาะสมที่สุดสำหรับเครื่องมือฐานข้อมูล SQL 2008 R2 ใหม่
อย่าเข้าใจสิ่งนี้! แต่เหนือขั้นตอนการย้ายจะช่วยให้คุณ คุณเพียงแค่ต้องกู้คืนฐานข้อมูลและเปลี่ยนระดับความเข้ากันได้ 10 100
พร้อมกับขั้นตอนข้างต้น
ฉันแค่อยากรู้วิธีการแปลงฐานข้อมูล SQL Server 2000 เก่าให้เป็นฐานข้อมูล 2008 R2 ใหม่อย่างถูกต้องและสงบใจว่าทุกอย่างถูกต้องและมีความสุขกับคุณสมบัติใหม่ทั้งหมด
คุณต้องระวังสิ่งนี้เนื่องจากจะต้องมีการเปลี่ยนแปลงรหัสแอปพลิเคชันของคุณเช่นกัน หากรหัสแอปพลิเคชันของคุณเปลี่ยนไปใช้คุณสมบัติใหม่ใน SQL Server 2008 R2 คุณจะไม่พบปัญหาใด ๆ - พิสูจน์ว่าคุณได้ทำการทดสอบการถดถอยอย่างสมบูรณ์ของแอปพลิเคชันของคุณในสภาพแวดล้อม UAT หรือ DEV สิ่งนี้จะให้ความเชื่อมั่นที่ดีที่สุดเมื่อคุณทำการโยกย้ายจริงใน PROD
หมายเหตุ:ข้างต้นเป็นขั้นตอนที่ฉันจำได้และฉันค่อนข้างมั่นใจว่าไม่มีอะไรเหลือ หากฉันเห็นว่าฉันพลาดบางสิ่งไปฉันจะเพิ่มมันหรือผู้เชี่ยวชาญอื่น ๆ ในเว็บไซต์นี้ - อย่าลังเลที่จะเพิ่ม!
ทุกสิ่งที่ระบุไว้ข้างต้นจำเป็นต้องเล่นซ้ำครั้งแรกในสภาพแวดล้อมที่ไม่มีการผลิตเพื่อหลีกเลี่ยงความประหลาดใจในระหว่างการย้ายข้อมูลจริง
----------
คำถามเพิ่มเติมไม่กี่:
คุณแนะนำให้ใช้วิธีการสำรองข้อมูล / คืนค่า แต่ฉันทำตามที่เขียนไว้ด้านบนแล้วฉันจะพบปัญหาได้หรือไม่ ทุกอย่างทำงานได้โดยไม่มีปัญหา
หากทุกอย่างทำงานได้ดีและคุณก็สามารถที่จะแนบฐานข้อมูลแล้วไม่มีคุณเคยชินจะมีปัญหาใด ๆ แยก / แนบการสำรองข้อมูล / การคืนค่าเป็นเพียงวิธีการที่คุณย้ายฐานข้อมูลไปยังที่อื่น เพียงแค่ FYI .. การสำรองข้อมูล / กู้คืนมีความปลอดภัยและน่าเชื่อถือมากกว่าราวกับว่ามีอะไรผิดพลาด (ในกรณีที่เลวร้ายที่สุด) ดังนั้นอย่างน้อยคุณก็มีการสำรองข้อมูลเพื่อกู้คืนและกู้คืนฐานข้อมูลของคุณ
เกี่ยวกับการตรวจสอบและรูปแบบการกู้คืนแบบเต็ม: ไม่มีอยู่ / เปิดใช้งานบน SQL Server 2000 ดังนั้นฉันต้องการใช้ตอนนี้ คุณบอกว่าสิ่งเดียวที่ฉันต้องทำคือเปิดใช้งานตัวเลือกเหล่านั้นในคุณสมบัติฐานข้อมูล ฉันได้อ่านที่ไหนสักแห่งว่ามันไม่เพียงพอและฉันควรสร้างดัชนีหรืออะไรบางอย่าง ฉันไม่รู้จริง ๆ ฉันแค่ถาม
อย่างที่ฉันบอกไว้ว่า checksum เป็นของใหม่ในรุ่น 2005 ขึ้นไป เป็นกลไกที่ SQL Server จะตรวจจับความเสียหายของหน้าโดยเฉพาะอย่างยิ่งเนื่องจาก I / O อ้างถึงคำตอบของฉันที่นี่สำหรับรายละเอียดเพิ่มเติม
หากต้องการเปิดใช้งาน CHECKSUM รวมถึงเปลี่ยนรูปแบบการกู้คืนเป็น FULL คุณสามารถทำได้โดยใช้รหัส T-SQL ด้านล่าง:
USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
หมายเหตุ: เมื่อคุณตั้งค่าตัวเลือกฐานข้อมูลจะยังคงอยู่เมื่อคุณทำการย้ายข้อมูลจาก 2008R2 ถึง 2012
ฉันกำลังเตรียมโยกย้ายฐานข้อมูลนี้ไปยัง SQL Server 2012 - ก่อนอื่นก็คือจากปี 2000 ถึง 2008 R2 ตอนนี้มันจะมาจาก 2008 R2 ถึง 2012 (เป็นไปไม่ได้ที่จะทำสิ่งนี้โดยตรงเพราะขาดการสนับสนุนฐานข้อมูล 2000 ใน SQL เซิร์ฟเวอร์ 2012) ดังนั้นฉันเข้าใจว่าฉันควรทำตามคำแนะนำของคุณ: สำรองข้อมูลในปี 2008 R2 และคืนค่าในปี 2012 จากนั้นทำตามคำแนะนำที่เหลือของคุณใช่ไหม
ได้โปรด อย่างที่ฉันได้กล่าวไว้การคืนค่าการสำรองข้อมูลเป็นวิธีการที่แนะนำเว้นแต่คุณมีเหตุผลที่ดี
โปรดอธิบายวิธีการสำรอง / คืนค่าให้ฉัน: มันเหมือนกับดัมพ์ของฐานข้อมูลไปยังเคียวรี SQL และจากนั้นกู้คืนโดยการรันเคียวรีแบบกลุ่ม? วิธีนี้จะใช้วิธี "จัดเรียงข้อมูล" ฐานข้อมูลของฉันหรือไม่ หากไม่มีวิธีการจัดเรียงข้อมูล / ปรับแต่งมันด้วยตนเอง?
การสำรองข้อมูล / คืนค่า ... คล้ายกับการถ่ายโอนและโหลดที่ใช้ใน Sybase, Oracle หรือ MySQL มันเป็นเพียง SQL Server เรียกมันว่า .. backup / restore
ต้องอ่าน: ทำความเข้าใจกับการสำรองข้อมูลเซิร์ฟเวอร์ SQLโดย Paul Randall
Simple Syntax (สำหรับไวยากรณ์แบบเต็มอ้างBOL ):
backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10
จากนั้นการคืนค่าสามารถทำได้บนเซิร์ฟเวอร์ปลายทางดังนี้:
- สมมติว่าเค้าโครงดิสก์ของปลายทางไม่ตรงกับของเซิร์ฟเวอร์ต้นทาง
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10
- สมมติว่าเค้าโครงดิสก์ของปลายทางตรงกับเซิร์ฟเวอร์ต้นทาง
restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10
วิธีนี้จะใช้วิธี "จัดเรียงข้อมูล" ฐานข้อมูลของฉันหรือไม่ หากไม่มีวิธีการจัดเรียงข้อมูล / ปรับแต่งมันด้วยตนเอง?
สำรอง / กู้คืนจะไม่จัดเรียงข้อมูลฐานข้อมูลของคุณ คุณต้องใช้ Alter Index จัดระเบียบใหม่หรือสร้างใหม่ขึ้นอยู่กับระดับการกระจายตัวของคุณ
เนื่องจากคุณยังใหม่กับ SQL Server ฉันขอแนะนำให้คุณใช้ Ola Hallengren:
เนื่องจากเราใช้ SQL Server 2000 Express เป็นเวลาหลายปี (ไม่มีส่วนต่อประสานการจัดการ) เราจึงทำการสำรองข้อมูลโดยการหยุดเอ็นจิ้นและ RAR ในไดเรกทอรี DATA ตอนนี้เราอยู่บน SQL Server 2008 แล้วนี่ยังดีกว่าการใช้ฟังก์ชั่นสำรองข้อมูลใน Management Studio หรือไม่?
การหยุดเครื่องยนต์เป็นสิ่งที่แย่กว่านั้นคือคุณสามารถสำรองข้อมูลได้ !!
อ่านลิงค์ของ Paul เกี่ยวกับข้อมูลสำรองที่ฉันพูดถึงและใช้สคริปต์ของ Ola Microsoft มีบทความ KB พร้อมสคริปต์เพื่อทำการสำรองข้อมูลอัตโนมัติ - วิธีกำหนดเวลาและสำรองข้อมูลอัตโนมัติของฐานข้อมูล SQL Server ใน SQL Server Express
โหมดการกู้คืนเต็มรูปแบบที่มีการสำรองข้อมูลบันทึกธุรกรรมบ่อยครั้ง - ไฟล์บันทึกธุรกรรมอยู่ที่ไหน - เป็นไฟล์ LDF หรือไม่ ฉันจะสำรองข้อมูลได้อย่างถูกต้องได้อย่างไร?
ทุกฐานข้อมูล SQL Server มีบันทึกที่บันทึกธุรกรรมทั้งหมดและการปรับเปลี่ยนฐานข้อมูลที่ทำโดยแต่ละธุรกรรม บันทึกการทำธุรกรรมเป็นองค์ประกอบที่สำคัญของฐานข้อมูลใด ๆ
ส่วนขยายแบบแผนการตั้งชื่อตามปกติสำหรับบันทึกธุรกรรมคือ '.LDF' แต่สามารถเป็นใดก็ได้
ฉันจะไม่เขียนเพิ่มเติมเกี่ยวกับเรื่องนี้เพราะนี่จะทำให้คำตอบมีมากมาย อ้างอิงการ
จัดการบันทึกธุรกรรมและคำตอบของฉันที่นี่มีลิงค์ที่ยอดเยี่ยมเช่นกัน
แก้ไข: 8/24/2016 .. สิ่งนี้จะช่วยผู้อ่านในอนาคต:
หากคุณกำลังโยกย้ายอินสแตนซ์ทั้งหมดของคุณจากรุ่นหนึ่งไปเป็นอีกรุ่นหนึ่งฉันขอแนะนำให้ใช้โซลูชันที่ใช้ PowerShellStart-SqlMigration