“ ไม่ได้เลือกชุดข้อมูลสำรองที่จะเรียกคืน” SQL Server 2012


150

ฉันมีฐานข้อมูล SQL Server 2012 ด้วยการเปิดใช้งาน filestream อย่างไรก็ตามเมื่อฉันสำรองข้อมูลและพยายามกู้คืนในอินสแตนซ์อื่นของ SQL Server 2012 (บนเครื่องอื่น) ฉันได้รับข้อความนี้ว่า:

ไม่ได้เลือกชุดข้อมูลสำรองที่จะเรียกคืน

ไม่ใช่คำอธิบายเพิ่มเติมแม้แต่บรรทัดเดียว เกิดอะไรขึ้นที่นี่?

ฐานข้อมูลอื่น ๆ ที่ไม่มี filestream นั้นก็โอเคและสามารถกู้คืนได้สำเร็จ มันเกี่ยวข้องกับ filestream ไหม? ฉันควรติดตั้งโปรแกรมแก้ไขด่วนหรืออะไรแบบนั้น


1
ยังไม่ได้แก้ไข ดูเหมือนว่าการกำหนดค่าเซิร์ฟเวอร์ SQL มีปัญหา ฉันคิดว่าสิ่งต่าง ๆ ควรจะง่ายกว่านี้
Saeed Neamati

1
คุณสามารถให้ T-SQL ที่คุณใช้เพื่อพยายามกู้คืนได้หรือไม่?
Ben Thul

3
ฉันใช้ GUI ของ SSMS
Saeed Neamati

แม้จะทำอย่างนั้นก็ควรมีปุ่ม "สคริปต์" อยู่ใกล้กับส่วนบนสุดของหน้าต่าง หลังจากที่คุณตั้งค่าทุกอย่างในแบบที่คุณคิดว่ามันจะถูกตั้งค่าสำหรับการคืนค่าให้กดปุ่มนั้นแทนที่จะเป็น "ok" และมันจะแสดง T-SQL ที่จะทำงานกับเซิร์ฟเวอร์สำหรับการกู้คืน
Ben Thul

1
เป็นปัญหาสิทธิ์สำหรับฉันเช่นกันกับ SQL 2014 Standard (แบบสแตนด์อโลน) ใน WS 2012 R2 (เวิร์กกรุ๊ป) แต่ต้องรีบูตสองครั้งเพื่อรับสิทธิ์ 'take' สำหรับสิ่งที่คุ้มค่า .. หวังว่าพวกคุณทุกคนจะได้รับการแก้ไขเช่นกัน
BaldEagle

คำตอบ:


177

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

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

ที่ควรให้ข้อความแสดงข้อผิดพลาดที่คุณต้องตรวจแก้จุดบกพร่องนี้


คุณได้รับข้อความแสดงข้อผิดพลาดอะไรบ้างเมื่อคุณลองกู้คืนโดยใช้ SQL ด้านบน
489998

ดูเหมือนว่าการกู้คืนฐานข้อมูลโดยใช้สคริปต์ T-SQL จะทำงาน ฉันคิดว่าเพราะเรายังไม่ได้สำรองข้อมูล filestream UI ไม่สามารถจัดการได้
Saeed Neamati

1
ดีฉันชอบวิธีการ SQL ดิบ ฉันได้รับข้อความเช่น `ชุดสื่อมี 2 ตระกูลสื่อ แต่มีเพียง 1 รายการเท่านั้น สมาชิกทุกคนจะต้องจัดให้ '- นี่หมายความว่าแหล่งข้อมูลสำรองเป็นเวอร์ชั่นของ SQL Server ที่แตกต่างจากเป้าหมายการสำรอง เมื่อฉันลองใช้วิธีการแบบ UI ("คืนค่า") ฉันจะได้รับข้อความ @ ด้านบนNo backupset selected to be restored.
The Red Pea


หากคุณต้องการแทนที่ฐานข้อมูลที่มีอยู่ให้ใช้ตัวเลือก WITH REPLACEโดยสมบูรณ์RESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes

63

ปัญหาของฉันจบลงด้วยการใช้สิทธิ์ ฉันใช้เครื่องพัฒนาและคัดลอกผ่านโฮมกรุ๊ป อย่างใดอาจขึ้นอยู่กับที่ฉันคัดลอกไฟล์ไปยังสิทธิ์ที่ได้รับสับสนและ Management Studio ไม่สามารถอ่านไฟล์ เนื่องจากนี่คือ dev ฉันเพิ่งอนุญาตให้ทุกคนอนุญาตให้ใช้ไฟล์ bak และสามารถกู้คืนผ่าน GUI ได้สำเร็จ


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

5
ไม่มีข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์ในกรณีนี้ ปัญหาของฉันได้รับการแก้ไขโดยสิ่งนี้
dodgy_coder

1
Booya! ต้องรักข้อผิดพลาดทั่วไปที่ไม่ได้บอกอะไรเลย แน่นอนมันเป็นสิทธิ์ เกิดขึ้นกับฉันเมื่อกู้คืนจากเซิร์ฟเวอร์ sql ในโดเมนที่แตกต่างกัน เปลี่ยนการอนุญาตของไฟล์. bak ให้กับทุกคน ทำงานได้ดีหลังจากนั้น
Prescient

ประสบปัญหาเดียวกันเมื่อพยายามกู้คืนฐานข้อมูลจาก.bakไฟล์ซึ่งสร้างโดยบริการอัพโหลดไฟล์ทางเว็บซึ่งทำงานภายใต้ IISApplicationPoolIdentity
apdevelop

26

เมื่อทำงาน:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

มันทำให้ฉันมีข้อผิดพลาดต่อไปนี้:

ตระกูลสื่อบนอุปกรณ์ 'C: \ NorthwindDB.bak' เกิดขึ้นไม่ถูกต้อง SQL Server ไม่สามารถประมวลผลตระกูลสื่อนี้ RESTORE HEADERONLY กำลังยกเลิกอย่างผิดปกติ (Microsoft SQL Server ข้อผิดพลาด: 3241) Blockquote

ปรากฎว่าคุณไม่สามารถนำ DB จาก SQL เวอร์ชันที่สูงกว่าไปต่ำกว่าแม้ว่าระดับความเข้ากันได้จะเท่ากันทั้งในแหล่งข้อมูลและฐานข้อมูลปลายทาง ในการตรวจสอบการรันเวอร์ชัน SQL:

Select @@Version

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

ดังนั้นหากคุณยังคงต้องย้ายข้อมูลของคุณไปเป็นรุ่นที่ต่ำกว่า SQL แล้วตรวจสอบนี้


ดังนั้นถ้าฉันสำรองข้อมูล db จากเครื่องด้วย sql server 2014 enterprise - มันสามารถกู้คืนบน sql server 2014 express ได้หรือไม่?
chester89

@ chester89 ฉันคิดว่ามันขึ้นอยู่กับชนิดของการทำงานที่คุณมีในฐานข้อมูล และชนิดของการสำรองข้อมูล รุ่นด่วนไม่รู้จักการบีบอัดข้อมูลสำรอง นอกจากนี้หากรุ่นองค์กรใช้สิ่งที่เป็นเอกลักษณ์ขององค์กรรุ่นฟรี (ด่วน) จะไม่รู้จัก แต่ถ้าคุณมีสิ่งที่เป็นมาตรฐานในทางทฤษฎีมันควรได้รับการยอมรับ
Juan Acosta

@ JuanAcosta ใช่ฉันใส่มันเข้าด้วยกัน ในกรณีของฉันไม่มีฟังก์ชั่นเฉพาะขององค์กรที่ใช้งานอยู่ดังนั้นฉันจึงกู้คืนข้อมูลสำรองได้อย่างไม่มีปัญหา
chester89

@JuanAcosta คุณสามารถชี้ให้ฉันไปที่เอกสารที่ระบุว่า Express Edition ไม่สามารถกู้คืนข้อมูลสำรองที่บีบอัดได้หรือไม่
chester89

@Chester โปรดตรวจสอบหน้า 234 จุด 3. ตัวเลือกเริ่มต้นเป็นตัวเลือกเดียวในเวอร์ชันด่วน books.google.com.au/…
Juan Acosta

15

เรียกใช้ SQL Server Management Studio ในฐานะผู้ดูแล (คลิกขวาที่ทางลัด / exe จากนั้นเลือก "Run as Administrator") จากนั้นลองเรียกคืน


10

ฉันคิดว่าฉันไม่โง่พอที่จะรวมรุ่น - แต่ฉันไม่ได้ตระหนักว่าบนเซิร์ฟเวอร์ใหม่ของฉันอินสแตนซ์ของ SQL Server 2005 ได้ถูกติดตั้งตั้งแต่แรกเกิดSQLEXPRESSแล้ว เมื่อพยายามกู้คืนฐานข้อมูล SQL Server 2008 R2 ของฉันที่สำรองไว้ใน SSMS 2012 ไปยังSQLEXPRESSอินสแตนซ์รายการชุดข้อมูลสำรองนั้นว่างเปล่า

ในที่สุดฉันก็รู้ว่าSQLEXPRESSอินสแตนซ์บนเซิร์ฟเวอร์ไม่ใช่อินสแตนซ์ 2012 แต่เป็นปี 2005 ฉันยกเลิกการเชื่อมต่อและเชื่อมต่อกับอินสแตนซ์ 2012 จริง (ในกรณีของฉันชื่อSQLEXPRESS2012) และมัน (เห็นได้ชัด) ทำงาน


2
สิ่งนี้ชี้ให้ฉันในทิศทางที่ถูกต้องสำหรับปัญหาของฉัน ฉันได้รับข้อผิดพลาดเดียวกับโปสเตอร์ต้นฉบับ แต่เป็นเพราะฉันพยายามกู้คืนข้อมูลสำรองจาก SQL Express 2012 ไปเป็นอินสแตนซ์ของ SQL Server 2008 เข้าใจได้ว่านี่ไม่แนะนำให้เลือก แต่น่าเสียดายที่ข้อผิดพลาดไม่ได้อธิบายพอที่จะได้รับปัญหาราก
LeastOne

1
ว้าว! ฉันได้ติดตั้งโปรแกรมแก้ไขด่วนมากเกินไปจากไซต์แล้ว แต่ข้อผิดพลาดนั้นไม่หายไป ฉันเห็นคำตอบนี้และบันทึกด้วยอินสแตนซ์ของ SQL Server 2012 และพยายามกู้คืนทำงานได้! Huh ขอบคุณ :)
Ali Baig

1
ดังนั้นคุณบอกว่าคุณไม่สามารถกู้คืนจากเวอร์ชันเต็มเป็นเวอร์ชันด่วนได้หรือไม่
Zapnologica

7

ปัญหาของฉันคือผู้ใช้ของฉันอยู่ในกลุ่มผู้ดูแลระบบภายในและไม่มีผู้ใช้ที่มีบทบาทดูแลระบบบน SQL Server ฉันเพิ่งเริ่ม Studio การจัดการในฐานะผู้ดูแลระบบ วิธีนี้เป็นไปได้ในการกู้คืนฐานข้อมูล


ฉันใช้บทความต่อไปนี้เพื่อสร้างผู้ใช้ดูแลระบบใหม่ (ดูหัวข้อที่ 2 โดยใช้โหมดผู้ใช้คนเดียว): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage

6

FYI: ฉันพบว่าเมื่อกู้คืนฉันต้องใช้ข้อมูลประจำตัวเดียวกัน (ผู้ใช้ SQL) เพื่อเข้าสู่ระบบ SSMS ฉันได้ลองคืนค่าครั้งแรกโดยใช้บัญชี Windows Authentication


6

ในกรณีของฉันมันเป็นสิทธิ์และความจริงที่ฉันใช้ "กู้คืนไฟล์และกลุ่มไฟล์ ... " ไม่ใช่แค่ "กู้คืนฐานข้อมูล ... "

นั่นทำให้ความแตกต่าง

ป้อนคำอธิบายรูปภาพที่นี่


6

สำหรับฉันมันเป็นปัญหาสิทธิ์ของผู้ใช้ ฉันเข้าสู่ระบบด้วยผู้ใช้ sa และทำงานได้ดี


5

สำหรับฉันปัญหาคือมีไฟล์. BAK อยู่ในโฟลเดอร์ที่เข้ารหัสบนเซิร์ฟเวอร์ แม้ว่าจะมีสิทธิ์ของผู้ดูแลระบบอย่างเต็มที่ แต่ฉันก็ไม่สามารถรับ SSMS ให้อ่านไฟล์ได้ การย้าย. BAK ไปยังโฟลเดอร์ที่ไม่ได้เข้ารหัสช่วยแก้ปัญหาของฉันได้ โปรดทราบว่าหลังจากย้ายไฟล์คุณอาจต้องเปลี่ยนคุณสมบัติในไฟล์จริงเพื่อลบการเข้ารหัส (คลิกขวา, คุณสมบัติ, ขั้นสูง, ไม่เลือก "เข้ารหัสเนื้อหาเพื่อความปลอดภัยของข้อมูล"


3

ฉันมีปัญหาเดียวกันกับ SQL Server 2014 (Management Studio ไม่สามารถมองเห็นโฟลเดอร์ที่มีไฟล์สำรองข้อมูลอยู่เมื่อพยายามค้นหาตำแหน่งสำหรับการดำเนินการกู้คืน) กระทู้นี้ถือคำตอบที่แก้ไขปัญหาของฉัน อ้างถึง:

บัญชีบริการ SQL Server สามารถพบได้โดยเริ่ม -> แผงควบคุม -> เครื่องมือการดูแลระบบ -> บริการ คลิกสองครั้งที่บริการ SQL Server-> แท็บเข้าสู่ระบบ คุณจะใช้ "บัญชี Local System" หรือ "บัญชีนี้" เพื่อกำหนดบัญชีเฉพาะ หากคุณใช้บัญชี Local System คุณจะไม่สามารถอ้างอิงข้อมูลสำรองที่ไม่ได้อยู่ในเครื่องไปยังเซิร์ฟเวอร์ หากคุณได้กำหนดบัญชีที่จะใช้แทนนี่เป็นบัญชีที่ต้องมีการเข้าถึงตำแหน่งไฟล์สำรอง ความสามารถในการเข้าถึงการสำรองข้อมูลโดยใช้การเข้าสู่ระบบส่วนบุคคลนั้นไม่เกี่ยวข้อง เป็นบัญชี SQL Server ที่ใช้แม้ว่าคุณจะเริ่มต้นการสำรองข้อมูล คนไอทีของคุณควรสามารถกำหนดสิทธิ์ที่จะได้รับสำหรับแต่ละบัญชี

หวังว่าจะช่วยใครซักคน


ขอขอบคุณที่คุณอ้างแหล่งที่มาที่นี่ในบรรทัดง่ายกว่าที่จะใช้ข้อมูลนั้นโดยไม่ต้องออกไปจากหน้านี้
qxotk

3

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


2

สำหรับฉันมันเป็นเพราะไฟล์สำรองข้อมูลยังคงเปิดอยู่โดยกระบวนการอื่น นี่คือบันทึกเหตุการณ์:

BackupDiskFile :: OpenMedia: อุปกรณ์สำรองข้อมูล 'X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak' ไม่สามารถเปิดได้ ข้อผิดพลาดของระบบปฏิบัติการ 32 (กระบวนการไม่สามารถเข้าถึงไฟล์ได้เนื่องจากกำลังถูกใช้โดยกระบวนการอื่น)

เพียงแค่ปิดและเปิด Sql Server Management Studio อีกครั้งเพื่อแก้ไข (เห็นได้ชัดว่ามันเป็น ssms.exe ที่มีหมายเลขอ้างอิง .. )


1

อีกสาเหตุที่เป็นไปได้สำหรับความผิดพลาดนี้ดูเหมือนจะเป็น Google ไดรฟ์ Google Drive กำลังบีบอัดไฟล์ bak หรืออะไรบางอย่างดังนั้นหากคุณต้องการถ่ายโอนข้อมูลสำรองฐานข้อมูลผ่านทาง Google Drive มันจะปรากฏขึ้นคุณจะต้องซิปก่อน


1

หากคุณต้องการแทนที่ฐานข้อมูลที่มีอยู่ให้ใช้ตัวเลือกWITH REPLACE :

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE

1

ในกรณีของฉันมันเป็นปัญหาสิทธิ์

ป้อนคำอธิบายรูปภาพที่นี่

สำหรับผู้ใช้ Windows ฉันใช้ไม่ได้มีdbcreatorบทบาท

ดังนั้นฉันจึงทำตามขั้นตอนด้านล่าง

  1. เชื่อมต่อsaกับเซิร์ฟเวอร์ SQL
  2. ขยายSecurityใน Object Explorer
  3. ขยายตัว Logins
  4. คลิกขวาที่คำถามผู้ใช้ Windows
  5. คลิกที่คุณสมบัติ
  6. เลือกServer RolesจากSelect a pageตัวเลือก
  7. ตรวจสอบdbcreatorบทบาทของผู้ใช้
  8. คลิกตกลง

ป้อนคำอธิบายรูปภาพที่นี่


0

ใช้ SQL Server 2012 Express

ข้อผิดพลาดของฉัน (จาก SQL Manager - กู้คืนไดอะล็อกฐานข้อมูล):

No backupset selected to be restored

นอกจากนี้ยังไม่มีชุดข้อมูลสำรองที่แสดงในรายการให้เลือก

ปัญหาคือฉันได้ย้ายไฟล์สำรอง 1 ใน 5 ไปยังโฟลเดอร์ที่ผู้ใช้เข้าสู่ระบบบริการ SQL Server ไม่ได้รับอนุญาต - ฉันพยายามเพิ่มผู้ใช้นั้น แต่ไม่สามารถรับผู้ใช้ NT Service \ MSSQL $ SQLEXPRESS NT เพื่อความปลอดภัย รายการ.

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

คำตอบในคำถามนี้ช่วยให้ฉันดูสถานที่ที่เหมาะสมและหาทางแก้ไขปัญหา


0

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


0

ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันแม้ว่าฉันจะสำรองข้อมูลและเรียกคืนบนเครื่องเดียว

ปัญหามาจากที่นี่: เมื่อสำรองข้อมูลฉันมี 2 รายการในกล่องปลายทาง

ดังนั้นการแก้ไขจะเป็น: ตรวจสอบให้แน่ใจว่ามีเพียง 1 รายการในช่อง 'ปลายทาง' ลบผู้อื่นทั้งหมดถ้ามี


0

ฉันพบปัญหาเดียวกัน เรียกใช้ SSMS ในฐานะผู้ดูแลระบบจากนั้นคลิกขวาและทำการกู้คืนฐานข้อมูล ควรทำงาน.


0

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

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