SQL Server คืนค่าผลลัพธ์การสำรองข้อมูลในข้อผิดพลาด


15

ฉันมีฐานข้อมูลใน dev (SQL Server 2005 บน Windows Server 2008) ที่ฉันต้องการย้ายไปยัง prod (SQL Server 2000 บน Windows Server 2003) กระบวนการของฉันเป็นดังนี้:

  1. เข้าสู่ระบบเพื่อพัฒนาเปิด SQL Server Management Studio
  2. คลิกขวาที่ฐานข้อมูล | Tasks | การสำรองข้อมูล ใช้ตัวเลือกเริ่มต้นทั้งหมด (สำรองข้อมูลเต็มรูปแบบ ฯลฯ )
  3. ย้ายไฟล์. bak ภายในเครื่องไปที่ prod (ไม่มีไดรฟ์เครือข่าย), เข้าสู่ระบบ prod, เปิดโปรแกรมจัดการเซิร์ฟเวอร์องค์กร SQL
  4. คลิกขวาที่โหนดฐานข้อมูล | งานทั้งหมด | กู้คืนฐานข้อมูล
  5. เปลี่ยนการคืนค่าเป็นฐานข้อมูลเพื่อแสดงชื่อฐานข้อมูลเดียวกัน
  6. คลิกปุ่มตัวเลือก 'จากอุปกรณ์' คลิก 'เลือกอุปกรณ์'
  7. คลิกเรียกคืนจาก: เพิ่ม ... เรียกดูไฟล์. bak (เล็ก - เพียง 6mb)

ตอนนี้ฉันพร้อมที่จะกู้คืนฐานข้อมูลดังนั้นฉันคลิกตกลงและรับข้อผิดพลาดต่อไปนี้:

"ตระกูลสื่อบนอุปกรณ์ 'E: ... bak' เกิดขึ้นอย่างไม่ถูกต้อง SQL Server ไม่สามารถประมวลผลตระกูลสื่อนี้ได้ RESTORE DATABASE จะสิ้นสุดลงอย่างผิดปกติ"

ข้อผิดพลาดนี้เกิดขึ้นทันที

ฉันได้ลองใช้รูปแบบที่แตกต่างกันสองสามอย่างนี้ - การกู้คืนเครื่อง db to dev ด้วยชื่อ db และชื่อไฟล์บันทึก (ที่มา) สร้างฐานข้อมูลเปล่าที่มีเส้นทางกายภาพเดียวกันไปยังไฟล์ก่อนและพยายามกู้คืนไป สร้างไฟล์. bak ที่แตกต่างกันเล็กน้อยและตรวจสอบให้แน่ใจว่าได้รับการยืนยันก่อนที่จะอัปโหลดไปยังผลิตภัณฑ์ ฉันรู้ว่ามีไดเรกทอรีสำหรับไฟล์. mdf และ. ldd อยู่ใน prod ถึงแม้ว่าไฟล์จะไม่มีอยู่ หากก่อนที่ฉันคลิกตกลงเพื่อเรียกคืนให้ไปที่แท็บตัวเลือกแทนฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด 3241: ตระกูลสื่อบนอุปกรณ์ 'E: ... bak' เกิดขึ้นไม่ถูกต้อง SQL Server ไม่สามารถประมวลผลตระกูลสื่อบันทึกนี้ได้ RESTORE FILELIST กำลังยกเลิกอย่างผิดปกติ

ใครมีความคิดที่สดใส?


ฉันเห็นด้วยเพิ่งใช้เวลาหนึ่งวันกับเรื่องนี้และเสียเวลาของฉันดูเหมือนว่าปัญหาความเข้ากันได้แบบย้อนหลัง 2k8 R2 ถึง 2k5 ในกรณีของฉัน

คำตอบ:


7

ส่วนหัวการสำรองข้อมูลใน MSSQL2008 นั้นแตกต่างจาก MSSQL2005 ซึ่งน่าจะเป็นต้นเหตุของปัญหาของคุณ ลองส่งออกฐานข้อมูลแทนที่จะเป็นกระบวนทัศน์การสำรองข้อมูลคืนค่าหรือตั้งค่า MSSQL2008 บนเซิร์ฟเวอร์ DEV ของคุณ


4

อย่างที่ Mike Dimmick พูดว่า - SQL 2000 จะไม่รู้จักการสำรองข้อมูลของ SQL 2005 (เช่น Word 2000 จะไม่รู้จักไฟล์ DOCX ของปี 2007) ดังนั้นคุณจะต้องย้ายข้อมูลของคุณในรูปแบบตัวหารร่วมเช่นสคริปต์ SQL ลองตัวช่วยสร้างการประกาศฐานข้อมูลซึ่งเป็นส่วนหนึ่งของSQL Server Hosting Toolkitซึ่งสร้างไฟล์ SQL ไฟล์เดียวสำหรับทั้งสคีมาและข้อมูล


1
สิ่งสำคัญคือต้องตรวจสอบว่าคุณติดตั้ง SqlExpress ไว้หรือไม่ (คุณอาจติดตั้งไว้โดยไม่ทราบว่ามี) มันง่ายมากที่จะเข้าสู่ SqlExpress โดยไม่ได้ตั้งใจแล้วตกใจเพราะมันจะไม่ยอมให้คุณกู้คืนฐานข้อมูลในปี 2008 นี่อาจเป็นสาเหตุที่พบได้บ่อยมากในการรับข้อผิดพลาดนี้
Simon

2

คุณสามารถย้ายการสำรองข้อมูลไปข้างหน้าในตระกูล SQL Server เช่น 2000 ถึง 2005 หรือ 2008 แต่ไม่ย้อนหลัง: คุณไม่สามารถคืนค่าการสำรองข้อมูล SQL Server 2005 ใน SQL Server 2000


1

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

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


1

โดยค่าเริ่มต้นมีนักสำรวจวัตถุสองคนจาก SQL Server 2005 ฉันคิดว่าคุณกำลังลองบนวัตถุเซิร์ฟเวอร์ / sqlexpress ลองคืนสภาพให้เป็นอีกอันหนึ่ง


1

(ถอนหายใจโล่งใจ) Ahhhhh นั่นคือปัญหา

ฉันมี SQL Server 2008 SP1 ทำงานบนพีซีระยะไกล ฉันสำรองฐานข้อมูลไว้ แต่ไม่สามารถรับสำเนา SQL Server 2008 ในเครื่องของฉันเพื่อกู้คืนจากไฟล์. bak

ตามที่ [Yini] บอกว่านี่เป็นสำเนาของ SQL Server 2008 ของฉันที่เปิดอินสแตนซ์SQL Server 2005ของฉันบนพีซีในระบบของฉันแทนที่จะเป็น SQL Server 2008 ของฉัน อัจฉริยภาพ

และฉันเห็นด้วยอย่างสมบูรณ์กับ [Yini] - ยุติธรรมมากพอคุณไม่สามารถกู้คืนข้อมูลสำรอง SQL Server 2008 ไปเป็นอินสแตนซ์ปี 2005 ได้ แต่อย่างน้อย Microsoft ก็สามารถส่งข้อความแสดงข้อผิดพลาดให้เราได้

"ตระกูลสื่อบนอุปกรณ์ 'D: \ DatabaseBackup_21_02_2011.bak' เกิดขึ้นอย่างไม่ถูกต้อง SQL Server ไม่สามารถประมวลผลตระกูลสื่อนี้ได้"

การสำรองข้อมูลของฉันไม่ถูกต้อง มันไม่สามารถกู้คืนในอินสแตนซ์ของ SQL Server 2005ได้แม้ในขณะที่ฉันใช้ SQL Server 2008 SP1

เป็นเรื่องยากไหมที่จะนำสิ่งนี้ไปใส่ในข้อความแสดงข้อผิดพลาด ............ ?


0

ความคิดเล็กน้อย:

  • ฐานข้อมูลที่คุณกู้คืนมีขนาดประมาณเท่าใด บทความสนับสนุน
    เฉพาะเกี่ยวกับข้อผิดพลาดนี้สำหรับ SQL 2000 และพูดคุยเกี่ยวกับไฟล์บันทึกขนาดใหญ่ ในขณะที่คุณไม่ได้อยู่ใน SQL 2000 อาจช่วยลดขนาดของบันทึกก่อนหากมีขนาดใหญ่เป็นพิเศษ

  • คุณสามารถกู้คืนฐานข้อมูลไปยังเซิร์ฟเวอร์ Dev ของคุณ (เป็นชื่อ db ที่แตกต่างกันไปยังไฟล์ต่าง ๆ ) ได้หรือไม่? สิ่งนี้จะพิสูจน์ได้ว่าตัวไฟล์เองนั้นดีพอ ๆ กับ SQL 2005 ที่เกี่ยวข้องหรือไม่

  • คุณสามารถกู้คืนฐานข้อมูลอื่น ๆ จากเซิร์ฟเวอร์ Dev นั้นไปยัง Prod ได้หรือไม่


0

สวัสดีทุกคนอย่างที่ไมค์แนะนำฉันอยากจะแนะนำ Database Publishing Wizard มันเป็นงานที่สวยงาม

นี่คือวิธีแก้ปัญหาผมเริ่มใช้ว่าฉันจะไม่ขอแนะนำให้ทั้งหมด - ดูเหมือนสลัมบิต


1) สร้าง db บน prod สร้างผู้ใช้ db ด้วยสิทธิ์ที่เหมาะสมเปิดพอร์ตบนไฟร์วอลล์ของคุณที่อนุญาตให้เข้าถึงจากระยะไกล
2) จาก dev ใน SQL Server Management Studio ให้คลิกขวาที่ db -> task -> data data เมื่อเลือกปลายทางตรวจสอบให้แน่ใจว่าได้ระบุพอร์ต xxx.xxx.xxx.xxx, 1764
3) เลือกตารางทั้งหมดที่จะถ่ายโอนคลิกถัดไป 100 ครั้งและคุณทำเสร็จแล้ว

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

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

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