การถ่ายโอนฐานข้อมูลไปยัง MS SQL Server เวอร์ชันเก่า

คุณมีฐานข้อมูล MS SQL Server ที่จำเป็นต้องย้ายไปยังคอมพิวเตอร์จริงเครื่องอื่น คุณได้ทำการสำรองข้อมูลแล้วและเริ่มต้นการกู้คืนอย่างมีความสุข แต่ปรากฎว่าบนคอมพิวเตอร์ที่คุณต้องการถ่ายโอนฐานข้อมูลมีการติดตั้ง MS SQL Server เวอร์ชันเก่ากว่า Stack Overflow รับรองว่าสิ่งไม่ดี แต่มันเป็นเช่นนั้นจริงหรือ?

แน่นอน การถ่ายโอนฐานข้อมูลจากเวอร์ชันที่ใหม่กว่าไปยังเวอร์ชันที่เก่ากว่านั้นไม่ใช่สถานการณ์แบบคลาสสิกและไม่ใช่สถานการณ์ที่ถูกต้องที่สุด แต่บ่อยครั้งที่ฐานข้อมูลถูกสร้างขึ้นในลักษณะที่รองรับ SQL เวอร์ชันใหม่มากขึ้นเรื่อยๆ โดยเริ่มจากบางฐานข้อมูล เช่น จาก 2008 R2 เป็นต้น ความเข้ากันได้โดยตรงกับ MS SQL นั้นยอดเยี่ยมยิ่งกว่า ตัวอย่างเช่น ลูกค้าของคุณติดตั้ง MS SQL 2016 แล้ว และคุณติดตั้ง MS SQL 2014 บนเซิร์ฟเวอร์ทดสอบเพื่อการพัฒนา และคุณต้องการขยายฐานข้อมูลของลูกค้าเพื่อดูว่าเขาสับสนกับข้อมูลตรงไหน

Microsoft ปฏิเสธปัญหา - พวกเขาบอกว่าพวกเขาไม่มีความเข้ากันได้แบบย้อนกลับ แค่นั้น ข้อมูลสำรองที่สร้างบนเซิร์ฟเวอร์ที่ใหม่กว่าไม่สามารถกู้คืนไปยังเซิร์ฟเวอร์ที่เก่ากว่าได้ ใช่ พวกเขามีเครื่องมือเช่น DTS, copy base, export-import เป็นต้น แต่ไม่สะดวกและยุ่งยากมากจนไม่สะดวกในการถ่ายโอนฐานข้อมูลขนาดใหญ่ที่มีตารางจำนวนมากโดยใช้ตามปกติ ไม่ว่าในกรณีใดฉันก็ไม่ประสบความสำเร็จเป็นการส่วนตัว

ได้ คุณสามารถสร้างสคริปต์ SQL สำหรับฐานข้อมูลทั้งหมด รวมถึงข้อมูลด้วย แต่ลองจินตนาการว่าคุณมีฟิลด์ Blob จำนวนมากที่มีข้อมูลขนาดใหญ่ในฐานข้อมูลของคุณ และโดยทั่วไปแล้วขนาดของฐานข้อมูลทั้งหมดคือ 500+ GB ลองนึกภาพว่าสคริปต์ดังกล่าวจะใช้เวลานานเท่าใด สร้างและดำเนินการนานแค่ไหน

ข้อจำกัดข้อที่หนึ่งคือคุณต้องเข้าถึงผ่าน MS SQL Management Studio ไปยังเซิร์ฟเวอร์ทั้งเก่าและใหม่ หากไม่สามารถทำได้ ควรเป็นไปได้ในเครื่องที่คุณต้องการถ่ายโอนฐานข้อมูล ติดตั้งเวอร์ชันของ SQL ที่คุณต้องการถ่ายโอนฐานข้อมูล เพื่อถ่ายโอนฐานข้อมูลก่อนไปยังเวอร์ชันนี้ในเครื่อง และ จากนั้นลากผ่านการสำรองข้อมูลหรือโดยตรงผ่านไฟล์ฐานข้อมูล *df (ผ่าน Detach/Attach) ไปยังเครื่องใหม่ (เวอร์ชัน SQL Server จะตรงกันอยู่แล้วในกรณีนี้)

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

ฉันจะอธิบายสั้น ๆ เกี่ยวกับอัลกอริทึมการถ่ายโอนข้อมูลเอง การดำเนินการทั้งหมดจะดำเนินการในเซสชัน Management Studio ที่เชื่อมต่อกับเซิร์ฟเวอร์ ที่คุณต้องย้ายฐาน

1) บนเซิร์ฟเวอร์ใหม่ ให้สร้างฐานข้อมูลเปล่าที่มีไฟล์และกลุ่มไฟล์เดียวกันกับฐานข้อมูลที่กำลังโอนย้าย

2) การใช้สคริปต์สคีมาฐานข้อมูล เราสร้างวัตถุฐานข้อมูลทั้งหมด (ตาราง ดัชนี มุมมอง ทริกเกอร์ โพรซีเดอร์ที่เก็บไว้ และฟังก์ชัน) แต่ไม่มีการสร้าง Foreign Key Constraints เป็นไปไม่ได้ที่จะสร้าง FK ในขั้นตอนนี้เนื่องจาก พวกเขาจะรบกวนการแทรกข้อมูล

3) เราเชื่อมต่อฐานข้อมูลที่เราจะถ่ายโอนข้อมูลเป็นเซิร์ฟเวอร์ที่เชื่อมโยง "a เพื่อให้เราสามารถใช้คำขอไปยังฐานข้อมูลเก่าในการสืบค้นไปยังฐานข้อมูลใหม่

EXEC sp_addlinkedserver @server=N"LinkedServerAlias", @srvproduct=N"", @provider=N"SQLNCLI", @datasrc=N"LinkedServerHost\LinkedServerName"; EXEC sp_addlinkedsrvlogin "LinkedServerUser", "false", null, "RealUser", "RealUserPassword";
4) เพราะ โครงสร้างฐานข้อมูลเหมือนกันเราจะใช้ขั้นตอนการจัดเก็บในตัว sp_msforeachtable ซึ่งช่วยให้คุณสามารถดำเนินการค้นหาในแต่ละตารางฐานข้อมูลเพื่อสร้างสคริปต์สำหรับการถ่ายโอนข้อมูลจากฐานข้อมูลเก่าไปยังฐานข้อมูลใหม่ผ่านแบบสอบถามเช่น

ใส่ลงใน ? เลือก * จาก ?
แทนที่จะใช้เครื่องหมายคำถาม sp_msforeachtable จะแทนที่ชื่อของแต่ละตารางและเรียกใช้คิวรีหลายครั้ง (หนึ่งครั้งต่อตาราง)

ที่นี่ฉันได้พบกับคราดจำนวนมากที่สุด

A) ปัญหาที่หนึ่งคือสำหรับตารางที่มีฟิลด์ IDENTITY คุณต้องโทร:

ตั้งค่า IDENTITY_INSERT บน; --INSERT INTO ... (แทรกเอง); ตั้งค่า IDENTITY_INSERT ปิด;
b) ปัญหาหมายเลขสองคือตารางที่ไม่มีฟิลด์ IDENTITY จะไม่สามารถเรียกใช้ได้ ดังนั้นคุณต้องกำหนดแบบไดนามิกว่าตารางมีคอลัมน์ IDENITY หรือไม่

สามารถทำได้ด้วยแบบสอบถามดังนี้:

เลือก * จาก INFORMATION_SCHEMA.COLUMNS ที่ (TABLE_NAME="SomeTable") และ (COLUMNPROPERTY(object_id("dbo.SomeTable"), COLUMN_NAME, "IsIdentity") = 1)
c) ปัญหาข้อที่สามคือ ในโหมด IDENITY_INSERT ON คุณไม่สามารถทำได้

INSERT INTO ... เลือก * จาก ...
แต่คุณต้องระบุฟิลด์เฉพาะ

คุณสามารถแสดงรายการเขตข้อมูลของตารางในแถวโดยใช้แบบสอบถามต่อไปนี้:

SELECT SUBSTRING((SELECT ", " + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "SomeTable" ORDER BY ORDINAL_POSITION FOR XML path("")), 3, 200000);
4) สร้างสคริปต์แทรกสำหรับตารางทั้งหมด:

ขั้นตอนการสร้างสคริปต์

EXEC sp_msforeachtable N" DECLARE @command varchar(MAX); DECLARE @name varchar(200); SET @name=""?""; SET @name = SUBSTRING(@name, 8, LEN(@name)-8); SET @command = """"; SELECT @command= SUBSTRING((SELECT "", "" + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = """" + @name + """" สั่งซื้อโดย ORDINAL_POSITION สำหรับ เส้นทาง XML("""")), 3, 200000); SET @command = ""INSERT INTO ""+ @name +"" (""+ @command + "") SELECT "" + @command + "" FROM "" + ""LinkedServerAlias.SourceDatabase."" + ""?""; SET @command= ""ถ้ามี (เลือก * จาก INFORMATION_SCHEMA.COLUMNS โดยที่ (TABLE_NAME="""""" + @Name + "" """") และ (COLUMNPROPERTY(object_id(""""dbo."" [ป้องกันอีเมล]+""""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @name + "" เปิด; "" [ป้องกันอีเมล]; ชุด @ [ป้องกันอีเมล]+"";"" + ""ถ้ามี (เลือก * จาก INFORMATION_SCHEMA.COLUMNS โดยที่ (TABLE_NAME="""""" + @Name + """""") และ (COLUMNPROPERTY(object_id(""""dbo "" [ป้องกันอีเมล]+""""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @name + "" OFF;""; พิมพ์ (@คำสั่ง); --EXEC(@คำสั่ง); // หากไม่แสดงความคิดเห็น สคริปต์จะถูกดำเนินการทันที ไม่ใช่แสดงบนหน้าจอ "


5) เรียกใช้สคริปต์การถ่ายโอนข้อมูลที่สร้างขึ้น

6) รันสคริปต์เพื่อสร้าง Foreign Key Constraints ทั้งหมด (ตอนนี้คุณทำได้แล้ว)

7) เสร็จแล้ว! คุณย้ายฐานข้อมูลจากเซิร์ฟเวอร์ SQL ใหม่ไปยังเซิร์ฟเวอร์เก่า แม้ว่าจะถือว่าเป็นไปไม่ได้ก็ตาม ยิ่งไปกว่านั้น การถ่ายโอนยังช้ากว่าอัตราการถ่ายโอนข้อมูลผ่านเครือข่ายเพียงหนึ่งเท่าครึ่ง นั่นคือ ค่อนข้างเร็ว

8) ทำความสะอาดหลังจากเรา (ปิดการใช้งานเซิร์ฟเวอร์ที่เชื่อมโยง):

EXEC sp_droplinkedsrvlogin "LinkedServerUser", null; sp_dropserver "LinkedServerAlias";
ข้อจำกัดของวิธีการ

1) วิธีนี้จะไม่สามารถถ่ายโอนตารางที่มีคอลัมน์เป็นประเภท XML
แน่นอนว่ามีข้อ จำกัด อื่น ๆ อีกมากมาย tk ฐานข้อมูลที่ฉันถ่ายโอนด้วยวิธีนี้ไม่ได้ใช้คุณสมบัติหลายอย่างของเซิร์ฟเวอร์ SQL คุณสามารถเขียนเกี่ยวกับข้อ จำกัด ในความคิดเห็นและฉันจะเสริมบทความด้วย

ขอขอบคุณสำหรับความสนใจของคุณ! หวังว่ามันจะช่วยใครสักคน

หลายคนมีความคิดเกี่ยวกับวิธีถ่ายโอนสคริปต์ด้วยฐานข้อมูล MySQL ไปยังโฮสติ้งอื่น ดังนั้นฉันจึงเขียนในบทความนี้ถึงวิธีการถ่ายโอนฐานข้อมูลของคุณโดยใช้ SSH / telnet และ PHPMyAdmin "ก.

หากคุณมีสิทธิ์เข้าถึง telnet หรือ SSH ไปยังเซิร์ฟเวอร์ทั้งสอง ลำดับการดำเนินการของคุณจะเป็นดังนี้:
Telnet/SSH ไปยังเซิร์ฟเวอร์ต้นทาง ส่งออกเนื้อหาของฐานข้อมูลของคุณด้วยคำสั่งต่อไปนี้:

mysqldump -uYourLogin -pYourPassword _mysql ฐานข้อมูลของคุณ > baza.sql

หลังจากดำเนินการคำสั่งนี้ เนื้อหาทั้งหมดของฐานข้อมูลของคุณจะถูกบันทึกไว้ในไฟล์ baza.sql

จากนั้นคุณต้องอัปโหลดไฟล์ผลลัพธ์พร้อมฐานข้อมูลของคุณไปยังเซิร์ฟเวอร์ผู้รับ ซึ่งสามารถทำได้ในเซสชัน telnet/SSH เดียวกันโดยใช้คำสั่ง ftp หรือใช้ไคลเอ็นต์ใดก็ได้ที่คุณต้องการ (ก่อนอื่นให้ดาวน์โหลดไฟล์ baza.sql ลงในคอมพิวเตอร์ของคุณ แล้วจึงอัปโหลดไปยังเซิร์ฟเวอร์ผู้รับ) หลังจากที่ไฟล์ฐานข้อมูลของคุณอยู่บนเซิร์ฟเวอร์ของผู้รับ ให้ไปที่เซิร์ฟเวอร์นี้ผ่าน telnet/SSH คุณสามารถอัปโหลดฐานข้อมูลของคุณไปยังเซิร์ฟเวอร์ที่รับได้โดยการรันคำสั่งต่อไปนี้:

mysql -uYourLogin -pYourPassword _mysql ฐานข้อมูลของคุณ< baza.sql

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

เทคนิคที่อธิบายข้างต้นสามารถใช้ในกรณีที่คุณสามารถเข้าถึงเซิร์ฟเวอร์ทั้งสองผ่าน telnet หรือ SSH และในกรณีที่ฐานข้อมูลของคุณค่อนข้างใหญ่ (หลายหมื่นรายการ) ในกรณีที่คุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ (หรือหนึ่งในนั้น) ผ่าน telnet หรือ SSH หรือคุณไม่ทราบวิธีทำงานในสภาพแวดล้อมคำสั่ง Unix และใช้ไคลเอนต์ telnet หรือ SSH คุณสามารถใช้เทคนิคต่อไปนี้:
บนเซิร์ฟเวอร์ต้นทาง ให้ไปที่สคริปต์สำหรับการทำงานกับฐานข้อมูล MySQL (โดยปกติคือ PHPMyAdmin) เลือกฐานข้อมูลที่ต้องการสำหรับการถ่ายโอนและระบุคุณสมบัติ "ดูการถ่ายโอนข้อมูลฐานข้อมูล (สคีมา)" (ควรสังเกตว่าชื่อเฉพาะของรายการเมนูอาจแตกต่างจากที่กล่าวถึงที่นี่เนื่องจากเวอร์ชันต่างๆ ของโปรแกรมอาจเป็น ใช้ในเซิร์ฟเวอร์ที่แตกต่างกัน ดังนั้นจึงควรอ่านเอกสารประกอบที่เกี่ยวข้อง) ทำเครื่องหมายรายการที่คุณต้องการ: "โครงสร้างเท่านั้น", "โครงสร้างและข้อมูล", "ข้อมูลเท่านั้น" และทำเครื่องหมายที่รายการ "ส่ง" เมื่อคุณกดปุ่ม "ไป" หลังจากนั้นสักครู่ คุณจะได้รับแจ้งให้อัปโหลดไฟล์ - นี่จะเป็นเนื้อหาของฐานข้อมูลของคุณ เมื่อไฟล์ถูกดาวน์โหลดไปยังคอมพิวเตอร์ของคุณ

ไฟล์เว็บไซต์ของเราอัปโหลดไปยังโฮสติ้งเรียบร้อยแล้ว อย่าเสียเวลาและถ่ายโอนฐานข้อมูลที่มีอยู่ (DB) จากโลคัลไปยังเซิร์ฟเวอร์

เมื่อต้องการทำเช่นนี้ ให้ไปที่ PhpMyAdmin ใครลืมไว้ที่ไหนดูสิ

เราเห็นฐานข้อมูลของเรา (mebelip) และคลิกที่ชื่อ

หน้าต่างเปิดขึ้นต่อหน้าเราพร้อมข้อมูลจำนวนมากที่บอกอะไรไม่ได้เลยสำหรับผู้เริ่มต้น แต่เราไม่ต้องการมันตอนนี้

เราเพียงแค่คลิกที่แท็บ "ส่งออก"


ฉันขอเตือนคุณว่าโดยค่าเริ่มต้น OpenServer จะเปิดขึ้นในเบราว์เซอร์ Chrome ดังนั้นที่มุมล่างซ้ายเราจะเห็นไฟล์ที่ดาวน์โหลด จำไว้ว่าคุณบันทึกไว้ที่ไหน เราต้องการมันในไม่ช้า

เราคลิกที่มัน


เพื่อความสนุกสนาน คุณสามารถดูข้อมูล "ความลับ" ที่อยู่ในนั้นได้ เปิดด้วยแผ่นจดบันทึกง่ายๆ


ทุกอย่างกับเซิร์ฟเวอร์ภายในเสร็จสิ้น ไปที่แผงการดูแลระบบของบัญชีโฮสติ้งของคุณ

ที่นี่เราสนใจแท็บ "MySQL"


คลิกปุ่ม "เพิ่มผู้ใช้ MySQL" ตามค่าเริ่มต้น มันถูกสร้างไว้แล้ว แต่ฉันแนะนำให้สร้างใหม่โดยเฉพาะสำหรับไซต์นี้

ในอนาคต เมื่อคุณมีเว็บไซต์มากกว่าหนึ่งแห่งที่นี่ สิ่งนี้จะช่วยหลีกเลี่ยงความสับสน


หน้าต่างป๊อปอัปปรากฏขึ้น เรากำหนดชื่อผู้ใช้ในนั้น ประกอบด้วยสองส่วน ส่วนแรกคือ host1234567 (ตัวเลขจะเป็นของคุณโดยเฉพาะ) ส่วนที่ไม่เปลี่ยนแปลง แต่ส่วนที่สอง เราเขียนข้อมูลของเรา

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

คุณสามารถตั้งรหัสผ่านของคุณเองได้


เราเห็นว่าผู้ใช้ใหม่ปรากฏขึ้น แต่ฐานข้อมูลไม่ได้แนบอยู่

ตอนนี้เรามาสร้างฐานข้อมูลกัน

คลิกที่แท็บ "ฐานข้อมูล MySQL"


ปุ่ม "เพิ่มฐานข้อมูล MySQL"

ป้อนชื่อในหน้าต่างป๊อปอัป เพื่อความสะดวกควรเขียนข้อมูลเดียวกันกับในชื่อผู้ใช้


มีการแนบฐานข้อมูลกับ user ที่เราสร้างไว้ก่อนหน้านี้

จดข้อมูลนี้ไว้ที่ใดที่หนึ่งเช่น ชื่อผู้ใช้และฐานข้อมูล และรหัสผ่าน หากคุณเปลี่ยน ทั้งหมดนี้จะจำเป็นในบทเรียนถัดไป

คลิกที่ "phpMyAdmin"


ทางด้านซ้าย ให้คลิกที่ฐานข้อมูลเริ่มต้น


เราพบอันที่สร้างขึ้นใหม่และเปิดด้วยวิธีเดียวกัน


ค้นหาแท็บ "นำเข้า" ที่ด้านบน - คลิก

สวัสดีผู้อ่านที่รักและเคารพในบล็อกของฉัน! วันนี้ฉันอยากจะบอกคุณเกี่ยวกับวิธีการถ่ายโอนฐานข้อมูล mysql ไปยังโฮสติ้ง

มาทำโดยไม่ต้องพูดให้ยืดยาวและวันนี้มาตรงประเด็นกันดีกว่า

มีวิธีใดบ้างในการคัดลอกฐานข้อมูลไปยังโฮสติ้ง

ฉันสามารถพูดได้อย่างมั่นใจว่ามีการคัดลอกหลายวิธีอย่างแน่นอน แต่ฉันไม่ต้องการอธิบายขั้นตอนที่ไร้เหตุผลและซับซ้อนเกินจริง และฉันจะไม่อธิบายเพราะมันไม่สมเหตุสมผล (ไม่น่าเป็นไปได้ที่คนที่ต้องการทำให้ชีวิตของพวกเขาซับซ้อนแฝงตัวอยู่ในกลุ่มผู้อ่าน)

ดังนั้นเราจะเริ่มจากตัวเลือกที่ง่ายและราคาย่อมเยาสำหรับคนทั่วไป ได้แก่:

  1. ส่งออกข้อมูลโดยใช้อินเทอร์เฟซ phpMyAdmin ผ่านแผงควบคุมของผู้ให้บริการ
  2. การคัดลอกฐานข้อมูลโดยใช้โปรแกรมของบุคคลที่สาม

ทางไหนดีกว่ากัน?

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

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

คำแนะนำทีละขั้นตอนสำหรับการสร้างฐานข้อมูลบนโฮสติ้งใหม่

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

  1. การเปิดใช้งานบัญชีส่วนตัวบนโฮสติ้งที่เช่า
  2. ค้นหาในเมนูสำหรับส่วน "MySQL", "ฐานข้อมูล" หรือเมนูชื่อที่คล้ายกัน
  3. การสร้างฐานข้อมูลบนโฮสติ้งโดยตรง
    ในการทำเช่นนี้คลิกปุ่ม "สร้าง" เรากำหนดชื่อใหม่สำหรับฐานข้อมูลผูกผู้ใช้กับฐานข้อมูล (บ่อยครั้งที่ผู้ให้บริการโฮสติ้งสร้างผู้ใช้โดยอัตโนมัติ แต่บางครั้งการดำเนินการนี้ควรทำด้วยตัวเอง ดังนั้นหากสิ่งนี้เกิดขึ้นอย่าลืมเปิดใช้งานการเข้าถึงระดับสูงสุด สิทธิ์ในบัญชีนี้)

เราถ่ายโอนฐานข้อมูล MySQL จากโฮสติ้งเก่าไปยังคอมพิวเตอร์

ตอนนี้ฉันเสนอให้ดำเนินการตามขั้นตอนที่ผู้ใช้ที่มีประสบการณ์เรียกว่าการถ่ายโอนข้อมูลฐานข้อมูล เราจะบันทึกฐานข้อมูลปัจจุบันจากโฮสติ้งเก่าไปยังคอมพิวเตอร์ของเรา

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

หลักสูตรของการดำเนินการ:

นำเข้าข้อมูล MySQL ไปยังโฮสติ้งใหม่

  1. เช่นเดียวกับในส่วนก่อนหน้า ไปที่แผงการดูแลระบบโฮสติ้ง
  2. เราเลือกฐานข้อมูลที่เราต้องการ (ฐานข้อมูลที่เราสร้างขึ้นในตอนแรก)
  3. คลิกแท็บ "นำเข้า"
  4. คลิก "เรียกดู" และระบุตำแหน่งของไฟล์จัดเก็บข้อมูลที่บันทึกไว้ก่อนหน้านี้ในคอมพิวเตอร์ของคุณ
  5. เราตรวจสอบความคล้ายคลึงกันของการเข้ารหัสกับการเข้ารหัสที่ใช้เมื่อบันทึกไฟล์ (จุดที่ 7 ของส่วนก่อนหน้า)
  6. เราปล่อยให้การตั้งค่าอื่นๆ ทั้งหมดไม่เปลี่ยนแปลงและดำเนินการคัดลอกข้อมูลไปยังเซิร์ฟเวอร์โฮสติ้งใหม่ให้เสร็จสมบูรณ์

การแก้ปัญหาที่เป็นไปได้

ตรวจสอบให้แน่ใจว่าไม่มีวลีค้นหา "สร้างฐานข้อมูล" ในไฟล์ที่จัดเก็บ ก่อนที่คุณจะเริ่มนำเข้าเนื้อหาไปยังโฮสติ้งใหม่ ในการดำเนินการนี้ ให้เปิดด้วยโปรแกรมข้อความใดก็ได้ (คุณสามารถใช้แผ่นจดบันทึกหรือแผ่น Word) และค้นหาข้อความค้นหาเหล่านี้ผ่าน Ctrl + F (โดยใช้การค้นหาข้อความ) และหากพบ ให้ลบออก

ฉันหวังว่าทุกอย่างชัดเจน! ทำตามคำแนะนำทีละขั้นตอนที่มีให้ คุณไม่ควรมีปัญหาใดๆ

แบ่งปันบทความที่เป็นประโยชน์ของบล็อกของฉันบนโซเชียลเน็ตเวิร์กกับเพื่อน ๆ สมัครรับข้อมูลอัปเดต แล้วพบกันเร็ว ๆ นี้!

ขอแสดงความนับถือ! อับดุลลิน รุสลัน

การถ่ายโอนฐานข้อมูลหมายถึงขั้นตอนการเปลี่ยนเซิร์ฟเวอร์ อินเตอร์เบสทั้งในทิศทางของการเพิ่มหมายเลขประจำเครื่องและในทิศทางของการลดลงรวมถึงการเปลี่ยนไปใช้ระบบปฏิบัติการหรือแพลตฟอร์มฮาร์ดแวร์อื่น ในบางแหล่งข้อมูล จะเรียกขั้นตอนสำหรับการย้ายฐานข้อมูล การโยกย้าย.

รุ่นที่ใช้งานอยู่ อินเตอร์เบสจาก 4.x เป็น 6.x และในเวอร์ชันที่ 6 สามารถสร้างฐานข้อมูลในภาษาถิ่น 1 หรือในภาษาถิ่น 3 โดยทั่วไป การย้ายจากเวอร์ชันรอง อินเตอร์เบสรุ่นเก่าไม่ต้องการการดำเนินการพิเศษใด ๆ และฐานข้อมูลทำงานได้ดี แต่ผู้ใช้ไม่สามารถใช้บริการเพิ่มเติมที่จัดทำโดยรุ่นเก่า ในกรณีของขั้นตอนการโอนฐานข้อมูลจะสามารถใช้บริการเพิ่มเติมได้ สำหรับภาษาถิ่นของเวอร์ชัน 6.x ข้อมูลบางประเภทจะถูกตีความแตกต่างกัน ตัวอย่างเช่นในเวอร์ชันก่อนหน้า อินเตอร์เบสและในภาษาถิ่น 1 เวอร์ชัน 6.x มีการกำหนดประเภทวันที่หนึ่งรายการ วันที่,ซึ่งค่าแรกประกอบด้วยวันที่และเวลา มีการกำหนดสามประเภทในภาษาถิ่น 3 รุ่น 6.x - การประทับเวลา,ซึ่งตรงตามประเภท วันที่,กำหนดไว้ในเวอร์ชันก่อนหน้า พิมพ์ วันที่,ซึ่งมีเฉพาะค่าวันที่และประเภท เวลา,ซึ่งมีค่าเวลา

เมื่อดำเนินการขั้นตอนการย้ายฐานข้อมูล การแทนที่ประเภทวันที่โดยอัตโนมัติจะดำเนินการในคำจำกัดความเท่านั้น โดเมนแทนที่ประเภทวันที่ในข้อมูลเมตา ด้วยตนเอง

ระบบปฏิบัติการแต่ละระบบตีความข้อมูลแต่ละประเภทในแบบของตัวเอง เมื่อติดตั้งเซิร์ฟเวอร์ อินเตอร์เบสไม่ว่าจะเวอร์ชันใดก็ตาม จะได้รับการกำหนดค่าสำหรับระบบปฏิบัติการและสภาพแวดล้อมของฮาร์ดแวร์ที่สอดคล้องกัน

ดังนั้น แต่ละฐานข้อมูลจึงมี "การผูก" กับเวอร์ชันของเซิร์ฟเวอร์ อินเตอร์เบส,เข้ากับสภาพแวดล้อมของระบบปฏิบัติการและฮาร์ดแวร์

สิ่งนี้อธิบายถึงความจำเป็นในการดำเนินการตามขั้นตอนการถ่ายโอนฐานข้อมูล

จากข้างต้น เป็นที่ชัดเจนว่าการสร้างการสำรองฐานข้อมูลด้วยการรวม ขนส่งได้ทำให้ข้อมูลเวอร์ชันรวมอยู่ในไฟล์สำรองข้อมูล อินเตอร์เบสสภาพแวดล้อมของระบบปฏิบัติการและฮาร์ดแวร์ที่ฐานข้อมูลถูกสร้างและดำเนินการ

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

โปรดทราบว่าคุณสามารถอัปเกรดเป็นเวอร์ชันถัดไปตามลำดับเท่านั้น อินเตอร์เบสทั้งในทิศทางขึ้นและลง

เมื่อย้ายฐานข้อมูลสองหรือสามเวอร์ชันที่สูงกว่า (หรือต่ำกว่า) คุณต้องดำเนินการตามขั้นตอนการโอนย้ายสำหรับแต่ละเวอร์ชัน ระดับกลางรุ่น IMegWase.

หากต้องการเปลี่ยนภาษาถิ่น (เช่น จากภาษาที่หนึ่งเป็นภาษาที่สาม) คุณต้องสร้างฐานข้อมูลใหม่หรือใช้ยูทิลิตี้ ย/ix.

อัลกอริทึมการย้ายฐานข้อมูล

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

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

ตัวอย่าง 12.7การคัดลอกไฟล์ของผู้ใช้ฐานข้อมูลที่ลงทะเบียน

gbak -b -user SYSDBA -รหัสผ่านมาสเตอร์คีย์ C:IBServeisc4.gdb C:isc4.gdk

วี. ติดตั้งเซิร์ฟเวอร์อีกครั้ง อินเตอร์เบสหรือเปลี่ยนไปใช้คอมพิวเตอร์ส่วนบุคคลเครื่องอื่น หลังจากติดตั้งเซิร์ฟเวอร์ใหม่บนคอมพิวเตอร์ส่วนบุคคล (หรือเปลี่ยนไปใช้คอมพิวเตอร์ส่วนบุคคลเครื่องอื่น) คุณต้องมีไฟล์ iscA.gdbคืนค่าโดยใช้ยูทิลิตี้เดียวกัน ปิด

สิ่งสำคัญคือต้องจำไว้ว่าเมื่ออัปเกรดเป็นเวอร์ชันที่สูงกว่า อินเตอร์เบสลูกค้าทั้งหมดที่ลงทะเบียนในรุ่นที่ต่ำกว่าถัดไป อินเตอร์เบส,จะทำงานได้ดี (แต่ไม่มีคุณสมบัติเพิ่มเติม) และในรุ่นเก่า - ไม่เสถียร

สำหรับไคลเอ็นต์ดังกล่าว ขอแนะนำให้ติดตั้งส่วนของไคลเอ็นต์ใหม่ อินเตอร์เบสบนคอมพิวเตอร์ส่วนบุคคลของลูกค้า

ตัวอย่าง 12.8การถ่ายโอนไฟล์ของผู้ใช้ที่ลงทะเบียนของฐานข้อมูล

gbak -c -user SYSDBA -รหัสผ่านมาสเตอร์คีย์ C:isc4.gdk C:isc4.gdb

ตัวอย่าง 12.7 และ 12.8 หมายความว่าเวอร์ชันถูกแทนที่ อินเตอร์เบสในคอมพิวเตอร์เครื่องหนึ่ง

d. กู้คืน (ถ่ายโอน) ฐานข้อมูลโดยใช้หนึ่งในวิธีที่อธิบายไว้ข้างต้น

อัลกอริทึมที่เสนอข้างต้นทำงานได้อย่างน่าเชื่อถือเมื่ออัปเกรดเวอร์ชัน อินเตอร์เบส.หากคุณต้องการดาวน์เกรดหมายเลขเวอร์ชัน อินเตอร์เบสจากนั้นในการดำเนินการนี้ คุณต้องมีคอมพิวเตอร์ส่วนบุคคลสองเครื่อง: เครื่องแรก - พร้อมฐานข้อมูลที่รันอยู่ในเวอร์ชันที่เก่ากว่า อินเตอร์เบส,ที่สอง - กับเซิร์ฟเวอร์ที่ติดตั้ง อินเตอร์เบสรุ่นที่ต่ำกว่า เราเริ่มขั้นตอนการสร้างสำเนาสำรองของฐานข้อมูล (รายการ "a" ของอัลกอริทึม) จากคอมพิวเตอร์เครื่องที่สอง สิ่งนี้จะสร้างไฟล์สำรองในเวอร์ชันที่ต่ำกว่า แต่ตัวเลือกต่อไปนี้เป็นไปได้:

  • ในเวอร์ชั่นที่เก่ากว่า อินเตอร์เบสเมื่อสร้างและใช้งานฐานข้อมูล จะไม่ได้ใช้กลไกที่ไม่มีในเวอร์ชันที่อายุน้อยกว่า อินเตอร์เบส,จากนั้นสำเนาของฐานข้อมูลที่ใช้งานได้ทั้งหมดจะถูกสร้างขึ้นในเวอร์ชันรอง อินเตอร์เบส",
  • ฐานข้อมูลใช้กลไกดั้งเดิมของเวอร์ชันเก่า อินเตอร์เบส,จากนั้นจะได้รับสำเนาของฐานข้อมูลและโปรโตคอลของข้อผิดพลาดที่ตรวจพบ และข้อผิดพลาดในการกู้คืนฐานข้อมูลในเวอร์ชันที่ต่ำกว่า อินเตอร์เบสต้องแก้ไข ด้วยตนเอง

เพื่อการทำงานที่เชื่อถือได้ของฐานข้อมูล จำเป็นต้องตรวจสอบเวอร์ชันและภาษาถิ่นของเซิร์ฟเวอร์เดียวกัน อินเตอร์เบสและฝั่งลูกค้า อินเตอร์เบสสำหรับลูกค้าแต่ละราย

ลูกค้าทุกรุ่น อินเตอร์เบสไม่เหมือนกับไคลเอนต์ที่ใช้ภาษาถิ่น 3 เวอร์ชัน 6.x ไม่มีสิทธิ์เข้าถึง:

สำหรับคำหลัก:

CURRENTDATE CURRENTTIME CURRENT_TIMESTAMP COLUMN

ประทับเวลา

สำหรับตัวระบุที่อยู่ในเครื่องหมายคำพูด



มีคำถามหรือไม่?

รายงานการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: